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

admin2009-02-15  23

问题 有以下程序:    #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数组中没有字符串结束符,故字符串的长度不自绷定。
转载请注明原文地址:https://jikaoti.com/ti/h4K0FFFM
0

最新回复(0)