C语言菜鸟问题(39)

2024-12-15 08:36:34
推荐回答(4个)
回答1:

应该选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没定义

回答2:

A是不是少打了一个分号?

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

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

---------------------
不过话说回来,C,D本身在语法上是没有错误的。

回答3:

第一个肯定不对,因为定义指针需要初始化,否则*p将变成野指针
第二个也是错的,因为strcpy()中是两个字符串拷贝,++a是a中的元素而不是字符串
第三个OK
第四个打印出来有乱码,因为a中的第一位是为初始化的

回答4:

是c
strcpy()是一个字符串复制函数,表示把指针st中的字符串复制到数组a中