为3D阵列分配内存

时间:2020-07-02 18:50:20

标签: c memory multidimensional-array malloc

我有一个数组:char game[10][10][3],我想为[10] [10]分配内存,我应该怎么做? 我想到的是类似char **game[3]的东西,但是当我做一些malloc时,它说我需要初始化该数组。

1 个答案:

答案 0 :(得分:1)

分配非常简单:

 typedef char game_board[10][10][3];

 game_board* board = malloc(sizeof(game_board));

尽管说实话,不使用指针就使用它会少很多麻烦。

请记住,char **game[3]是指向大小为3的数组的指针的指针。请注意中间指针。在原始定义中,它是10个数组,每个数组的长度为3个,长度为10个数组。此结构中没有指针。虽然可以像game[x][y][z]一样引用这两种形式,但这仅是因为C如何使语法相同。这不是对所涉及的实际结构的反映。