A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© pojian 中级黑马   /  2016-3-11 12:45  /  1415 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

以下不能正确进行字符串赋初值的语句是()。
A.    char str[5]= "good!";
B. char *str="good!";
C.    char str[]="good!";
D. char str[5]={'g', 'o','o', 'd'};

5 个回复

正序浏览
A   系统会自动追加\0 追加后长度不够
回复 使用道具 举报
A  系统会自动追加 一个\0  追加后长度不够
回复 使用道具 举报
本帖最后由 hit_zhangjian 于 2016-3-11 22:50 编辑

应该选A,因为左边定义的是一个长度为5的字符数组,而右边赋的是一个6个字符的字符串,只能赋值前5个,最后一位的\0无法赋值,所以它不是字符串. ;            B,它是通过指针的形式定义一个字符串常量是标准的定义形式所以是对的;
            C由于定义的字符数组没有显式的定义数组长度所以数组的长度等于赋值语句右边的字符串长度即6(5个字符加一个\0)所以它是正确的字符串赋值语句;
            D由于定义的字符数组长度为5,而右边只初始赋值了4个字符,多出的一个字符系统会默认补空字符即\0所以它也是正确的字符串赋值语句.
回复 使用道具 举报
答案是A
A的字符数组越界了,A字符串实际有6个元素  
回复 使用道具 举报
D,应该选D,D应该写成 char str[5] = {'g','o','o','d',0};
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马