我有以下描述游戏板的数组:
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);
关于c - 如何 malloc() 非默认类型的多维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26555655/