对字符数组初始化时,若指定元素个数,则编译器会自动加尾\0,否则不加。但若采用双引号初始化,则会加。
char a1[10] = {'a', 'b', 'c', 'd'};
char a2[] = {'x', 'y', 'z'};
char a3[] = "hello";
printf("%s\n", a1);
printf("%s\n", a2);
printf("%s\n", a3);
运行结果:
abcd
xyz乱码
hello