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

admin2009-01-15  36

问题 有以下程序:    #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数组中都没有字符串结束符,故长度都不能确定

答案2

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

最新回复(0)