赞
踩
1.字符串复制函数strcpy (字符数组1, 字符数组2),字符数组1的长度应大于等于字符数组2的长度. 说法是否正确?
解答:说法正确
strcpy函数:顾名思义字符串复制函数:
功能:将字符串src中最多n个字符复制到字符数组dest中(它并不像strcpy一样遇到NULL才停止复制,而是等凑够n个字符
才开始复制),返回指向dest的指针。
要求:如果n > dest串长度,dest栈空间溢出产生崩溃异常。该函数注意的地方和strcpy类似。
(c/c++)复制字符串src中的内容(字符,数字、汉字....)到字符串dest中,复制多少由size_tn的值决定。如果src的前n个字符
不含NULL字符,则结果不会以NULL字符结束。如果n<src的长度,只是将src的前n个字符复制到dest的前n个字符,不自动添
加'\0',也就是结果dest不包括'\0',需要再手动添加一个'\0'。如果src的长度小于n个字节,则以NULL填充dest直到复制完n个字
节。src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符长度+'\0'。举例:
- #include <iostream>
- #include <cstring>
-
- using namespace std;
-
- int main()
- {
- char str1[9];
- char* str2 = "abcdef";
- char str3[9];
- strcpy(str1, str2);
- strncpy(str3, str2, 4);
- str3[4] = '\0';//没有会乱码
- cout << str1 << endl;
- cout << str3 << endl;
-
- return 0;
- }
如果在复制完的str3的后面不添加'\0',会出现乱码的情况。
2.
- 链接:https://www.nowcoder.com/questionTerminal/b3d940c4174d4d02a969435576a5da35
- 来源:牛客网
-
- void swap(int &a,int &b)
- {
- int temp;
- temp=a;
- a=b;
- b=temp;
- cout<<a<<’ ‘<<b<<’\n’;
- }
-
- int main(){
-
- int x=1;
- int y=2;
- swap(x,y);
- cout<<x<<’ ‘<<y<<’\n’;
- return 0;
- }
上面程序输出的是?
解答:
调用函数swap(x, y);传给被调用函数void swap(int &a, int &b )的是x、y的引用,所以在被调用函数里面交换相应的也会交换实参,所以都是
输出2 1,如果传给被调函数的是x,y的数值,而不是引用,那么在被调用函数里面进行交换,并不会交换实参,两种情况的代码如下:
1)传给被调函数的是x,y的引用
- #include <iostream>
- #include <cstring>
-
- using namespace std;
-
- void swap(int &a, int &b)
- {
- int temp;
- temp = a;
- a = b;
- b = temp;
- cout << a << ' ' << b << ' ';
- }
-
- int main(){
-
- int x = 1;
- int y = 2;
- swap(x, y);
- cout << x << ' ' << y << '\n';
- return 0;
- }
输出结果为:2 1 2 1
2)传递给被调函数的是x,y的数值,而不是引用:
- #include <iostream>
- #include <cstring>
-
- using namespace std;
-
- void swap(int a, int b)
- {
- int temp;
- temp = a;
- a = b;
- b = temp;
- cout << a << ' ' << b << ' ';
- }
-
- int main(){
-
- int x = 1;
- int y = 2;
- swap(x, y);
- cout << x << ' ' << y << '\n';
- return 0;
- }
输出结果为:2 1 1 2
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。