虽然我的数组只有 3 大小,并且我为每个元素分配了一个字符,但仍然会自动添加一个 NULL 终止符。是什么原因导致在我的代码中添加 NULL 终止符?
int main(void)
{
char s[3];
s[0] = 'f';
s[1] = 'o';
s[2] = 'o';
int i = 0;
while (s[i] != ' ')
printf("%c", s[i++]);
printf("n");
if (s[i] == ' ')
printf("Null Terminator Addedn");
}
它不是"自动添加的"。 当您尝试访问 s[3]
时,您正在访问不属于数组s
的内存。 在您的计算机上,此内存似乎恰好包含一个空字节。 你不能指望这种情况发生;也许在另一台机器上,或者在另一次运行中,该内存将恰好包含其他内容。 或者,计算机可能会检测到非法内存访问,并且您的程序将崩溃。 或者,也许您的程序会以其他一些微妙和意想不到的方式中断。
简短的回答:你的程序有问题,你无法从它的行为中得出任何有意义的结论。