下面的数组描述了一个游戏板:
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);