代码示例:
int main()
{
char arr1[] = "bit";
char arr2[] = { 'b', 'i', 't' };
char arr3[] = { 'b', 'i', 't', '\0' };
printf("%s\n", arr1);
printf("%s\n", arr2);
printf("%s\n", arr3);
return 0;
}
编辑
这里arr1和arr3的打印时正常的,但是为什么打印的arr2会出现乱码呢?
字符的结束标志是遇到'\0', 在C语言中字符串 " bit "后面是带有 " \0 "的,也就是 " bit '\0' ",所以打印 bit;
arr3中字符数组中包含 ' \0 ',所以打印和arr1相同,同为 bit;
arr2中只包含三个字符 'b' 'i' 't' ,而printf函数打印时遇到 '\0'才会停止,此时就会沿着 字符arr2所在的内存空间,继续向下打印,直到碰到'\0' ,而由于arr2后面的内存空间都是没有进行初始化的,所以会打印像 “烫烫烫”等乱码。