输入值以在c中堆叠2维

输入值以在c中堆叠2维

This question already has an answer here:
Subscripts going out of range in an array
                                
                                    (1个答案)
                                
                        
                                2年前关闭。
            
                    
我有这个代码

#include<stdio.h>
#include<conio.h>
#define MAXCOL 3
#define MAXROW 3

typedef struct {
    int arr[MAXCOL][MAXROW];
}GAME;

void createGame(GAME *G){
    int i, j;

    for(i=0; i<=MAXCOL; i++){
        for(j=0; j<=MAXROW; j++){
            (*G).arr[i][j] = 0;
        }
    }
}


但是当我编译它时,输出看起来像这样

[0][0][0][0]
[0][0][0][0]
[0][0][0][-1]
[-1][1][0][0]


-1,-1和1分别从哪里来呢?

最佳答案

如果可以相信名称MAXCOL和MAXROW(您想要第3列和第3行),则可以通过执行以下操作来修复它:

typedef struct {
    int arr[MAXCOL+1][MAXROW+1];
}GAME;


这样,您实际上将为4(0,1,2,3)行和4列分配足够的空间。

关于c - 输入值以在c中堆叠2维,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50187131/

10-13 05:03