c - 如何 malloc() 非默认类型的多维数组?

标签 c arrays multidimensional-array malloc

我有以下描述游戏板的数组:

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/

相关文章:

c# - 如何动态生成和填充多维数组

c - "int i = 0"中的操作数

Javascript 使用 'pre year' 自定义按年份对对象数组进行排序

javascript - 如何从 JavaScript 关联数组中删除对象?

c - C 函数原型(prototype)返回二维数组

在c中将字符串转换为int

c - C 语言总计不正确

c - 将无符号整数存储到结构中

c - C中if语句的问题

php - 处理超大阵列的最佳实践? D B?