c - 数组中的元素太多!

标签 c arrays size double

抱歉,如果这是一个菜鸟问题 :( .

一段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/

相关文章:

C 中不区分大小写的字符串比较

objective-c - 将 uint8_t 数组传递给方法

c - 字符数组到链表 - 使用数组中的地址

arrays - 在 Go slice 或数组中查找唯一项

javascript - 如何使用数组从选择选项中添加值

java - 有什么办法可以固定 window 吗?

ios - 如何调整按钮的大小? swift

c - 如何检测已删除的 mmap 文件的读取?

html - Bootstrap : Fill whole container under navbar minus navbar height

c - 函数参数用作语句