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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 77媛儿 中级黑马   /  2014-3-17 07:42  /  1085 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

char name[8]="jack888\n";
这个数组字符串加上\n里边正好8个数组元素,可是加上\0,是不是应该是char name[9]=“jack888\n”?

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

4 个回复

倒序浏览
假如你定义的是char name[8]="jack888\n";name这个name数组内就没有'\0'这个元素因为数组不能越界,那个'\0'不会在数组中,但是假如你定义的是
char name[9]="jack888\n";那么数组中最后一个name[9]就是'\0'。
回复 使用道具 举报 1 0
脸皮猴 发表于 2014-3-17 08:41
假如你定义的是char name[8]="jack888\n";name这个name数组内就没有'\0'这个元素因为数组不能越界,那个'\0 ...

哦哦 我懂了,如果我写char name[2]="jack",这个就会报错 ,char name[ ]="jack\n" 应该是6个元素吧
回复 使用道具 举报
77媛儿 发表于 2014-3-17 10:56
哦哦 我懂了,如果我写char name[2]="jack",这个就会报错 ,char name[ ]="jack\n" 应该是6个元素吧 ...

写成char name[2] = "jack"不会报错的,由于name只分配了2个字节,所以只会保存 'j' 和 'a',至于 'c' 和 'k' 就不会被保存。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
lixiangzhou 发表于 2014-3-17 12:10
写成char name[2] = "jack"不会报错的,由于name只分配了2个字节,所以只会保存 'j' 和 'a',至于 'c' 和 ...

会报错啊,字符串不存在\0,就会报错,printf("%s\n",name);没法输出
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马