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的数据域,看看加起来是不是等于计算出来的长度。