设已有定义:char*st="how are you”;,下列程序段中正确的是()
A. char a[11],*p;strcpy(p=a+1,&st[4]);
B. char a[11];strcpy(++a,st);
C. char a[11];strcpy(a,st);
D. char a[ ],*p;strcpy(p=a[1],st+2);
我想知道那个&是干嘛的
唉,这后面的题都没大佬写解析了
为什么编译器下c也可以
快乐小土狗 回复 jinyehui: C选项不是标准语法,编译器虽然能运行但是有warning警告信息。
怎么不改
【解释】a是数组名,是一地址常量,...
用户登录可进行刷题及查看答案
【解释】a是数组名,是一地址常量,++a是非法的,所以答案B错误;因为数组a的
大小为11,执行strcpy(a,st);,st字符串的结尾符’\0’无法存放到数组a中,所以答案C也是
错误的;答案D中定义数组a时未指定大小,所以也是错误的;对于答案A来说,执行strcpy
(p=a+1,&st[4]);,首先将数组a的第二个元素a[1]的地址赋给指针变量p,然后将st第5个
元素开始直到字符串结束为止的字符复制到p所指向的内存单元中,所以选择答案是A。
登录后提交答案