我正在尝试在C中创建数组的深层副本(originalBoard是副本):

int gy, gx;
            for (gy=0; gy<9; gy++)
            {
                for (gx=0; gx<9; gx++)
                {
                g.originalBoard[gy][gx]=g.board[gy][gx];
                }
            }


这似乎没有解决,我猜测这只是指向原始板阵列的指针。

那么解决方案是尝试使用malloc吗?喜欢:

    int* g.originalBoard[9][9]=malloc(sizeof(g.board[9][9]));


顺便说一句,这是一个9x9的二维数组。语法是什么(编译器在上一行中给出了错误...)?

最佳答案

我认为您需要这样做:

 //assuming g.originalBoard is array of array of integers and same for g.board
int *originalBoard = malloc(sizeof(g.board));
memcpy(originalBoard, g.board, sizeof(g.board));

10-07 16:29