字符数组结束后存储了什么?我假设会有一些随机垃圾但是在循环结束后它没有打印任何东西,而是循环10次。
char a[] = "Pencil";
int i;
for (i = 0; i < 10; i++)
{
printf("%c", a[i]);
}
所以字符数组a的大小为7.并且循环循环到第10个位置,这是循环的3个值。但它没有打印任何东西或错误。这里发生了什么?
答案 0 :(得分:1)
在C中超出数组末尾访问是未定义的行为。您的程序可以继续运行不变,或者可能会严重崩溃,具体取决于数组末尾存储的内容。编译器不保证存储的内容 - 它可能是无用的内存,也可能对您的程序至关重要。
答案 1 :(得分:0)
访问数组长度之外的数组元素会调用未定义的行为,这意味着任何事情都可能发生。