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

09-25 17:49