A-A+

有以下程序: #include <string.h> main() { char p[]={

2022-08-05 20:55:28 问答库 阅读 172 次

问题详情

有以下程序: #include <string.h> main() { char p[]={"a","b","c"},q[10]={"a","b","c"}; printf("%d %dn",strlen(p),strlen(q)); } 以下叙述中正确的是()。
A.在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3
B.由于p数组中没有字符串结束符,长度不能确定;但q数组中字符串长度为3
C.由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3
D.由于p和q数组中都没有字符串结束符,故长度都不能确定请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:B
解析:使用初始化列表对字符数组赋初值,系统不会自动为其添加字符串结束符,使用字符串初始化时才会自动添加,所以选项A是错的。数组长度在未指定的情况下由初始化列表项中数据的个数决定,若已指定且初始化项数不足时,多出部分会自动初始化为0,0等价于宁符串结束符'\0'。所以选项B是正确的,C和D都是错误的。本题应该选B。

考点:程序