黑马程序员技术交流社区

标题: 字符串赋初值 [打印本页]

作者: pojian    时间: 2016-3-11 12:45
标题: 字符串赋初值
以下不能正确进行字符串赋初值的语句是()。
A.    char str[5]= "good!";
B. char *str="good!";
C.    char str[]="good!";
D. char str[5]={'g', 'o','o', 'd'};


作者: 简单的爱    时间: 2016-3-11 20:45
D,应该选D,D应该写成 char str[5] = {'g','o','o','d',0};
作者: 冷傲阳    时间: 2016-3-11 21:58
答案是A
A的字符数组越界了,A字符串实际有6个元素  
作者: hit_zhangjian    时间: 2016-3-11 22:49
本帖最后由 hit_zhangjian 于 2016-3-11 22:50 编辑

应该选A,因为左边定义的是一个长度为5的字符数组,而右边赋的是一个6个字符的字符串,只能赋值前5个,最后一位的\0无法赋值,所以它不是字符串. ;            B,它是通过指针的形式定义一个字符串常量是标准的定义形式所以是对的;
            C由于定义的字符数组没有显式的定义数组长度所以数组的长度等于赋值语句右边的字符串长度即6(5个字符加一个\0)所以它是正确的字符串赋值语句;
            D由于定义的字符数组长度为5,而右边只初始赋值了4个字符,多出的一个字符系统会默认补空字符即\0所以它也是正确的字符串赋值语句.





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2