问题 单项选择题

有以下程序:
#include<string.h>
main()
char p[]='a', 'b', 'c', q[10]='a', 'b', 'c';
printf("%d%d\n", strlen(p), strlen(q));

以下叙述中正确的是

A) 在给p和q数组置初值时,系统会自动添加字符串结束符,故输出的长度都为3
B) 由于p数组中没有字符串结束符,长度不能确定;但q数组中字符长度为3
C) 由于q数组中没有字符串结束符,长度不能确定;但p数组中字符长度为3
D) 由于p和q数组中没有字符串结束符,故长度都不能确定

答案

参考答案:B

解析: 本题考查的是库函数的调用。strlen()是计算以"\0"结束的字符串的长度函数,函数的值为字符串的实际长度,不包括"\0"。题中"q[10]={'a','b','c'}"虽然给出了数组大小,即数组实际分配的存储空间,但此字符串只占用前3个存储单元,其余存储单元系统自动加上"\0",故数组q的长度为3;由于p数组中没有字符串结束符,故字符串的长度不能确定。

单项选择题
选择题