单选题
若有C语言语句“char r1[]="abcd",r2[]='a','b','c','d'”,则下列说法正确的是______。
【正确答案】
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个字节的内存空间。