C程序题,帮帮忙啊!若有定义:char *x="abcdefghi";以下选项中正确运用了strcpy函数的是
来源:百度知道 编辑:UC知道 时间:2024/05/13 12:02:17
A、char y[10];strcpy(y,x[4]);
B、char y[10];strcpy(++y,&x[1]);
C、char y[10],*s;strcpy(s=y+5,x);
D、char y[10],*s;strcpy(s=y+1,x+1);
改选哪个呢?麻烦给出清晰的解释。
B、char y[10];strcpy(++y,&x[1]);
C、char y[10],*s;strcpy(s=y+5,x);
D、char y[10],*s;strcpy(s=y+1,x+1);
改选哪个呢?麻烦给出清晰的解释。
A、char y[10];strcpy(y,x[4]); //第二个参数应该是个指针
B、char y[10];strcpy(++y,&x[1]); //越界了吧
C、char y[10],*s;strcpy(s=y+5,x); //赋值后已经越界了
D、char y[10],*s;strcpy(s=y+1,x+1); //正确
可能如此
正是如此!
和1楼的有点不同
A,B与C,D的差别在于
A,B改变了y的值
不知道你记得不记得,书本上有句话,数组的数组名是常量,试问,常量怎么能对他们赋值呢?
显然,A和B都改变了y的值。
这一类排除,然后考虑C,D
很明显吸取了A,B的教训,定义了一个变量,然后接收常量的值加以改变,这就没有问题了
C就越界了,从y以后的5个单元加abcdefghi,显然超过10。
答案就出来啦
选D
strcpy函数原型是char* strcpy(char* strDest,const char* strSrc);
选项A,第二个参数是一个字符e,所以不对。
选项B,y代表数组y[10]的首地址,是一个常数,不能对其进行操作;不正确。
选项C和D,应该说都是正确的,因为第一个参数只需要传个地址就可以了,但是数组y没有被初始化,如果要输出就会有脏数据存在。
若有 定义 char ch;
若有定义:char c=‘\010’;则变量c中包含的字符个数为【10】。
定义时char *s和char s[ ]有什么区别
请问:定义一个char *p = new char[105]和定义一个char p[105] 有什么区别?
若有:char a; int b;float c,double d;则a*b+d-c值的类型是什么啊?
请教一个C语言的判断题,麻烦解释一下,谢谢!!若有语句:char *s1="string2";则
现在有以下定义,int a;double b;float c;char k;则下面的表达式a/b+c-k值的类型为:
C程序高手帮帮忙啊!
有一道c程序,请高手帮帮忙
定义char For;合法吗?