C语言菜鸟问题(39)

设已有定义:char*st="howareyou";下列程序段中正确的是()A:chara[11],*pstrcpy(p=a+1,&st[4]);B:chara[11];... 设已有定义: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[11];strcpy(p=&a[1],st+2);

请帮我讲解一下 我要的不是正确答案。。。在线等 谢谢啦
展开
 我来答
14566666
2008-03-29 · TA获得超过1382个赞
知道小有建树答主
回答量:905
采纳率:50%
帮助的人:284万
展开全部
应该选C,A.char[11]后没分号

B ++a是错误的,数组不能这样操作,创建了a[11]后,a的值是固定的,不能改变,不能自+,自-,学指针的时候应该有提到
C.strcpy(a,st); 这个要12个字符放到11个空间大小的数组里面
把'\0'给截断了,如果你再执行这个char *p;strcpy(p,a);
输出p的时候就会出错以后编程的时候,因为字符数组一般都用来存贮字符串的,所以我们构造字符数组的时候,一般是构造比待存储字符串长度+1以上的大小数组,但是C答案确实是正确的,个人不建议这样做

D.p没定义
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友46c12d00b
2008-03-29 · TA获得超过1036个赞
知道小有建树答主
回答量:1129
采纳率:0%
帮助的人:895万
展开全部
A是不是少打了一个分号?

st指向的字符串是12个字符(包括最后的“\0”),首先排除B,C,
D中的p没有定义,排除。

所以只剩A,意思是将字符串st中从第四个元素开始的子字符串复制到a[1]开始的数组中。
(字符串和字符数组可以看作一回事,所以p=a+1就是p=&a[1],&st[4]就是st+4)

---------------------
不过话说回来,C,D本身在语法上是没有错误的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
03013106
2008-03-29 · TA获得超过101个赞
知道小有建树答主
回答量:198
采纳率:0%
帮助的人:66.1万
展开全部
第一个肯定不对,因为定义指针需要初始化,否则*p将变成野指针
第二个也是错的,因为strcpy()中是两个字符串拷贝,++a是a中的元素而不是字符串
第三个OK
第四个打印出来有乱码,因为a中的第一位是为初始化的
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
书海故事
2008-03-29
知道答主
回答量:27
采纳率:0%
帮助的人:7.1万
展开全部
是c
strcpy()是一个字符串复制函数,表示把指针st中的字符串复制到数组a中
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式