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

admin2009-01-15  24

问题 有以下程序    #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/cBXp777K
0

最新回复(0)