首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

c字符数组的诡异有关问题

2012-09-21 
c字符数组的诡异问题char str1[10] {hello} // 数组长度为5 , 所占字节为10 ,这个很明白。。。char str2

c字符数组的诡异问题
char str1[10] = {"hello"}; // 数组长度为5 , 所占字节为10 ,这个很明白。。。
char str2[1] = {"hello"}; //为什么长度就为 7 ,字节为 1了 。。很不懂。。7怎么来的啊

[解决办法]
我敲错代码了,楼主得到的是7,1吧,我第一次得到的是9,1;重启后得到的是6,1;因为数组越界,所以数组中会有脏数据,数组第一个肯定是h,长度1;
我第一次里面有2个脏汉字,汉字长度每个为2,2*2=4,后面跟了hello四个字符,长度是4,所以总长度是1+4+4=9。
我第二次里面有2个脏汉字,长度为2*2,后面跟了个问号,问号的长度为1,总长度1+2*2+1=6;

就是这样,因为数组越界,每次数组首地址指向的东西除了第一个h以外都是不可预见的,楼主可以自己输出str2的数据域,看看加起来是不是等于计算出来的长度。

热点排行