本帖最后由 风扫地 于 2018-4-9 18:01 编辑
name1没手动\0 结尾。
而“hello”这种字符串默认以\0结尾
用for循环越界输出到name1[6]看看是啥。。、、
测试代码:
int main()
{
char name1[] = { 'F','i','s','h','C' };
char name2[] = "FishC";
int len1 = sizeof(name1);
int len2 = sizeof(name2);
printf("name1_len = %d\n", len1); //5
printf("name2_len = %d", len2); //6
printf("%s \n", name1);
printf("%s \n", name2);
for (int i = 0; i < 10; i++) {
printf("name1[%d] = 0x%x \n",i,name1[i]);
}
return 0;
}
输出结果:
没有默认添0(至于为什么是0xcc,此处不扩展,需要了解的请查阅
https://www.cnblogs.com/findumars/p/7128303.html).
在用单个字符给字符数组赋值时,字符数组不会添\0(用整数给整数数组初始化的时候,难道会给你多补一个0??)
用字符串给字符数字赋值时,字符串本来就以\0结尾,所以生成的字符数组最后一个元素是\0。