C-数组超出范围

C-数组超出范围,c,arrays,range,C,Arrays,Range,考虑到以下几点: #define SIZE 5 /* ... */ int oxen[SIZE] = {5,3,2,8}; int yaks[SIZE]; yaks[SIZE] = oxen [SIZE]; /* -->Out of range */ 有人能解释一下为什么它超出了范围吗?因为,oxen[SIZE]实际上是在试图遵从不存在的第六个元素。改为使用索引[SIZE-1]。因为,oxen[SIZE]实际上是在尝试遵从不存在的第六个元素。使用索引[SIZE-1]。在C中数组索

考虑到以下几点:

#define SIZE 5

/* ... */

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

有人能解释一下为什么它超出了范围吗?

因为,
oxen[SIZE]
实际上是在试图遵从不存在的第六个元素。改为使用索引
[SIZE-1]

因为,
oxen[SIZE]
实际上是在尝试遵从不存在的第六个元素。使用索引
[SIZE-1]

在C中数组索引从0开始,因此你的
牦牛
数组范围从
0
SIZE-1

正如编译器正确地警告您的那样,您超出了允许的边界。

C中的数组索引从0开始,因此您的
oxen
yaks
数组范围从
0
SIZE-1

正如编译器正确地警告您的那样,您超出了允许的边界。

因为c语言可以通过数组元素的索引访问数组元素 因此 索引从0开始到n-1,其中n是数组中的元素数 因此,在您的情况下,您可以访问从0到4个索引的元素 如果处理字符数组,可能是因为空终止符“\0”
此外,u可能不会得到错误和随机结果,因为它依赖于编译器:)

,因为c语言可以通过数组元素的索引访问数组元素 因此 索引从0开始到n-1,其中n是数组中的元素数 因此,在您的情况下,您可以访问从0到4个索引的元素 如果处理字符数组,可能是因为空终止符“\0”
此外,u可能不会得到错误和随机结果,因为它依赖于编译器:)

Yes。对于大小为5的数组,有效下标(索引)为0-4,因此没有
yaks[5]
oxen[5]
。因为您没有阅读任何C书籍或教程中“数组”部分的第一页。@John3136或任何其他页面;我猜他正试图分配所有元素。对于大小为5的数组,有效下标(索引)为0-4,因此没有
yaks[5]
oxen[5]
。因为您没有阅读任何C书籍或教程中“数组”部分的第一页。@John3136或任何其他页面;我猜他正试图分配所有元素