C - 为什么在将单个字符分配给数组时会自动添加字符串终止符



虽然我的数组只有 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的内存。 在您的计算机上,此内存似乎恰好包含一个空字节。 你不能指望这种情况发生;也许在另一台机器上,或者在另一次运行中,该内存将恰好包含其他内容。 或者,计算机可能会检测到非法内存访问,并且您的程序将崩溃。 或者,也许您的程序会以其他一些微妙和意想不到的方式中断。

简短的回答:你的程序有问题,你无法从它的行为中得出任何有意义的结论。

相关内容

  • 没有找到相关文章

最新更新