C - 数组超出范围

时间:2014-11-27 23:59:24

标签: c arrays range

考虑以下因素:

#define SIZE 5

/* ... */

int oxen[SIZE] = {5,3,2,8};
int yaks[SIZE];
yaks[SIZE] = oxen [SIZE];   /* -->Out of range */

有人可以解释为什么它超出范围吗?

3 个答案:

答案 0 :(得分:3)

C中的数组索引从0开始,因此oxenyaks数组的范围从0SIZE-1。 您已超出允许的范围,因为编译器正确警告您。

答案 1 :(得分:1)

因为C is zero-indexedoxen[SIZE]确实试图取消引用不存在的第六个元素。请改为使用索引[SIZE-1]

答案 2 :(得分:0)

因为c语言可以通过索引访问数组元素 从而 index从0开始到n-1,其中n是数组中元素的数量 所以在你的情况下你可以访问0到4个索引的元素 如果你处理字符数组可能这是因为null终结符'\ 0' 你也可能没有得到错误并得到随机结果,因为它的编译器依赖于它:)