【问题标题】:Allocating memory for a 3D array为 3D 数组分配内存
【发布时间】:2020-10-23 10:55:19
【问题描述】:

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

【问题讨论】:

  • char game[10][10][3]; 有什么问题?为什么需要动态分配?
  • "它说我需要初始化数组。" --> 什么是“它”。

标签: c memory multidimensional-array malloc


【解决方案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 如何使语法相同。这不是对所涉及的实际结构的反映。

【讨论】:

  • ... board = malloc(sizeof *board);
  • @chux-ReinstateMonica 这就是酷孩子们所做的,我不确定我是否那么酷。
猜你喜欢
  • 2016-12-30
  • 1970-01-01
  • 2011-01-27
  • 2021-11-12
  • 2020-08-18
  • 2017-01-12
  • 2014-04-21
  • 2015-02-01
相关资源
最近更新 更多