抱歉,如果这是一个菜鸟问题 :( .
一段C代码。
int array[5];
int cnt;
for(cnt = 0; cnt <= 10; cnt+=1)
{
array[cnt] = cnt;
}
应该报错了吧?不!工作良好! 但这是为什么呢?似乎 - 在第一行中 - 定义了一个大于两倍大小 (11) 的数组。您甚至可以稍后访问数组 [5 到 10]。这让我很困惑。当您定义数组 [4 或更少] 时它停止工作 ...
提前致谢。
最佳答案
它可能恰好适用于您的特定编译器和计算机,但您不应该指望它。
根据 C 语言规范,您的代码行为未定义。这意味着它可能会如您所愿,或者它可能会导致您的计算机崩溃,或者它可能会导致 demons to fly out your nose .
与 Java 和 C# 等高级语言不同,C 信任您并且不会对数组的边界执行显式检查。你应该负责而不是越过阵列的边界。
关于c - 数组中的元素太多!,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/795194/