我正在为C编程类做例子:
#define xSize 2
#define ySize 3
int x,y, a[xSize][ySize];
for (x=1; x<=xSize; x++){
for (y=1; y<=ySize; y++){
a[x][y]=(x*x)+(y*y);}}
for (x=1; x<=xSize; x++){
for (y=1; y<=ySize; y++){
printf("a[%d][%d]= %d ", x, y, a[x][y]);}}
当我尝试在“Xcode-macOS”中编译时出现错误
但是当我给int x,y,a [xSize + 1] [ySize + 1]它编译好了,为什么会发生?
当您指定a[xSize]
和b[ySize]
时。数组a
可以存储高达xSize
值,而b
可以存储高达ySize
值。然而,分别从数组xSize-1
和ySize-1
的索引0到a
和0到b
开始。因此,当您使用for循环时,您实际上将数组限制为xSize
的最大索引时,使用索引从1到xSize-1
迭代循环。
数组索引从0开始。在for循环中,使用x = 1 && x <= size进行迭代。条件应为x = 0 && x <size。同样适用于阵列的所有尺寸。