
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);
请帮我讲解一下 我要的不是正确答案。。。在线等 谢谢啦 展开
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);
请帮我讲解一下 我要的不是正确答案。。。在线等 谢谢啦 展开
4个回答
展开全部
应该选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没定义
B ++a是错误的,数组不能这样操作,创建了a[11]后,a的值是固定的,不能改变,不能自+,自-,学指针的时候应该有提到
C.strcpy(a,st); 这个要12个字符放到11个空间大小的数组里面
把'\0'给截断了,如果你再执行这个char *p;strcpy(p,a);
输出p的时候就会出错以后编程的时候,因为字符数组一般都用来存贮字符串的,所以我们构造字符数组的时候,一般是构造比待存储字符串长度+1以上的大小数组,但是C答案确实是正确的,个人不建议这样做
D.p没定义
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
A是不是少打了一个分号?
st指向的字符串是12个字符(包括最后的“\0”),首先排除B,C,
D中的p没有定义,排除。
所以只剩A,意思是将字符串st中从第四个元素开始的子字符串复制到a[1]开始的数组中。
(字符串和字符数组可以看作一回事,所以p=a+1就是p=&a[1],&st[4]就是st+4)
---------------------
不过话说回来,C,D本身在语法上是没有错误的。
st指向的字符串是12个字符(包括最后的“\0”),首先排除B,C,
D中的p没有定义,排除。
所以只剩A,意思是将字符串st中从第四个元素开始的子字符串复制到a[1]开始的数组中。
(字符串和字符数组可以看作一回事,所以p=a+1就是p=&a[1],&st[4]就是st+4)
---------------------
不过话说回来,C,D本身在语法上是没有错误的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一个肯定不对,因为定义指针需要初始化,否则*p将变成野指针
第二个也是错的,因为strcpy()中是两个字符串拷贝,++a是a中的元素而不是字符串
第三个OK
第四个打印出来有乱码,因为a中的第一位是为初始化的
第二个也是错的,因为strcpy()中是两个字符串拷贝,++a是a中的元素而不是字符串
第三个OK
第四个打印出来有乱码,因为a中的第一位是为初始化的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是c
strcpy()是一个字符串复制函数,表示把指针st中的字符串复制到数组a中
strcpy()是一个字符串复制函数,表示把指针st中的字符串复制到数组a中
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询