早教吧 育儿知识 作业答案 考试题库 百科 知识分享

江苏二级C的一道选择题不懂已有声明“char*1=”China”,s2[10],*s3=”Nanjing”,*s4;”,以下字符串赋值语句在执行时可能出现错误的是(25)A.strcpy(s3,s1);

题目详情
江苏二级C的一道选择题不懂
已有声明“char *1=”China”,s2[10],*s3=”Nanjing”,*s4;”,以下字符串赋值语句在执行时可能出现错误的是 (25)
A. strcpy(s3,s1); B. strcpy(s4,s1);
C. strcpy(s2,s1); D. strcpy(s2,s3);
答案是B 为什么呢
▼优质解答
答案和解析
是不是 char *S1=”China” ?
虽然定义的形式是指针,但是S1,S2,S3都是字符数组。(S1实际表示指向"China”的数组)
C语言规定数组定义时就要指定数组长度。但是可在定义时直接赋初值,根据所赋初值确定数组长度,如本题中S1的长度即为字符串"China”的长度,即6(还有'/0’)。但是S4并未赋初值,所以还是指向字符的指针。
B中 strcpy(s4,s1); 表示把S1的值赋值给S4,S4指向未知字符,所以出现错误