考虑以下因素:
#define SIZE 5
/* ... */
int oxen[SIZE] = {5,3,2,8};
int yaks[SIZE];
yaks[SIZE] = oxen [SIZE]; /* -->Out of range */
有人可以解释为什么它超出范围吗?
答案 0 :(得分:3)
C中的数组索引从0开始,因此oxen
和yaks
数组的范围从0
到SIZE-1
。
您已超出允许的范围,因为编译器正确警告您。
答案 1 :(得分:1)
因为C is zero-indexed,oxen[SIZE]
确实试图取消引用不存在的第六个元素。请改为使用索引[SIZE-1]
。
答案 2 :(得分:0)
因为c语言可以通过索引访问数组元素 从而 index从0开始到n-1,其中n是数组中元素的数量 所以在你的情况下你可以访问0到4个索引的元素 如果你处理字符数组可能这是因为null终结符'\ 0' 你也可能没有得到错误并得到随机结果,因为它的编译器依赖于它:)