我正在为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
中分别从索引0到ySize-1
和0到a
开始。因此,当您使用循环时,当数组被限制为b
的最大索引时,用索引从1迭代到xSize
。