若有C语言语句“char r1[]="abcd",r2[]={’a’,’b’,’c’,’d’}”,则下列说法正确的是______。

admin2009-09-04  23

问题 若有C语言语句“char r1[]="abcd",r2[]={’a’,’b’,’c’,’d’}”,则下列说法正确的是______。

选项 A、数组r1和数组r2存放相同的字符串
B、数组r1和数组r2的长度相同
C、数组r1的长度小于数组r2的长度
D、数组r1的长度大于数组r2的长度

答案D

解析 其实这道题所考查的知识点是大多数人在编写程序时常犯的一个错误。很多人觉得r1和r2只是赋值形式不同,其结果一致。这种想法是错误的,r1的初值是一个字符串,所以系统会自动为其加上一个字符串结束符’\0’,因此r1的长度为5,而r2的长度为4。注意,这里比较的是数组r1和r2的大小(长度),而不是存储在其中的字符串的有效长度。由于r2没有结束字符’\0’,因此strlen(r2)输出不定,不是预期的4,一般输出的是8,依具体机器而定。利用sizeof运算符可以计算出r1、r2的长度,sizeof(r1)输出的是5,sizeof(r2)则输出4,表示r1、r2分别占5、4个字节的内存空间。
转载请注明原文地址:https://kaotiyun.com/show/9gxZ777K
0

相关试题推荐
最新回复(0)