C中的数组初始化

Joh*_*ash 0 c

有人可以解释一下为什么不能'\0'在给定数组中放置一个字符:

char a[]={'r','b'};

a[2]='\0';
Run Code Online (Sandbox Code Playgroud)

上面的代码不应该在第三个插槽中放置一个空字符,因此将字符数组a转换为字符串.

das*_*ght 8

您正在写入数组边界:当您使用两个字符初始化数组时,最后一个有效索引1不是2.

您应该使用三个项初始化数组,如下所示:

char a[] = {'r', 'b', '\0'};
Run Code Online (Sandbox Code Playgroud)

你也可以使用这个版本:

char a[] = "rb";
Run Code Online (Sandbox Code Playgroud)

这将为您提供一个可写数组,其中包含一个以零结尾的字符串.