【发布时间】:2015-07-11 04:52:35
【问题描述】:
字符数组结束后存储的是什么?我假设会有一些随机垃圾,但它在循环 10 次后没有打印任何内容。
char a[] = "Pencil";
int i;
for (i = 0; i < 10; i++)
{
printf("%c", a[i]);
}
所以字符数组 a 的大小为 7。并且 for 循环循环到第 10 个位置,其中还有 3 个值循环通过。但它没有打印任何内容或错误。这是怎么回事?
【问题讨论】:
-
未定义的行为正是如此,未定义。任何事情都可能发生,包括看似理智的行为。
-
如果您通过十六进制转储程序运行输出,您可能会发现在终端 null 之后打印了三个字符,但这并不能保证,它们的值也不能保证。它们可能是空字节;它们可能是控制字符。
-
字符串末尾之外的三个字符可能无法打印。
-
接受人生的一大奥秘。 ;)