下面的数组描述了一个游戏板:

square * board = (square *)malloc(sizeof(square)*n*n);

如何初始化这样一个数组,使其元素指向上述声明的其他游戏板?
也就是说,我想初始化整个board数组的片段;就像这样(伪代码):
boards[0] -> [0,0,...0]
boards[1] -> [0,0,...0]
boards[2] -> [0,0,...0]

我必须使用malloc()来分配boards数组。
我已经试过了:
square (*t_board)[11];
t_board = malloc(sizeof(player)*n*n*11);

但我错了:“使用未声明的标识‘t_board’;你是指‘board’?”

最佳答案

首先用指针为数组分配内存,然后是板卡。

square **boards;
int nbr_boards = 5;
int n = 24;

//Allocate space for pointers
boards = malloc(nbr_boards * sizeof *boards);

//Allocate space for each board
for (int i = 0; i < nbr_boards; ++i)
        boards[i] = malloc(n * n sizeof **boards);

你可以用这个作为
boards[BOARD_INDEX][SQUARE_INDEX]

要在以后释放它,必须再次循环指针:
for (int i = 0; i < nbr_boards; ++i)
        free(boards[i]);
free(boards);

10-05 18:42