C : Static to dynamic allocation on multiple dimension array

标签 c malloc typedef

我目前受困于使用多维数组的遗留代码:

#define B 25
int Table[A][B][C][D][E][F];

我需要用动态值更改 B 常量。问题是,我需要保持表格与以前一样,这样除了重写的分配之外我不会有任何其他东西。

我想听听您对如何做这样的事情的想法/意见。

目前我正在尝试对表的末尾 ([C][D][E]) 进行类型定义,以便在分配时对其进行 malloc,但我遇到了有关该表不是遗留代码所希望的错误...

//int32_t Table[A][B][C][D][E][F];
int32_t* Table[A];

typedef int32_t type_1_t[E][F];
typedef type_1_t type_2_t[C][D];

for (int i = 0; i < A; i++)
  Table[i] = (int32_t*) malloc (sizeof (type_2_t) * dynamic_B);

使用这个,我在使用表时得到一个错误(“错误:下标值既不是数组也不是指针也不是 vector ”)。

XXX = Table [a][b][c][d][e][f];

最佳答案

你的类型有误:

int32_t* Table[A];

事实上应该是

int32_t (*Table[A])[C][D][E][F];

或者,当你输入定义的时候

type_2_t *Table[A];

这应该可以解决问题。

关于C : Static to dynamic allocation on multiple dimension array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7469550/

相关文章:

c++ - 我可以将 enable_if 与 typedef 一起使用吗?

c - 在 C 中,无法获取数组来保存新值

c - 如何将一棵简单的树写入文件并读回?

c - 如何在 C 中使用单个 malloc 分配三角数组?

c - 系统小程序 : Assertion failed - How can I solve?

c++ - 如果我在 C 或 C++ 中执行 `typedef`,我什么时候应该在 typedef'ed 类型的末尾添加 `_t`?

C:如何屏蔽宏参数中的逗号?

检查文件是否存在,否则创建一个新文件

c++ - 免费(指针)方法的性能?

c - 如何检查 typedef 结构的内部 typedef 结构是否为 NULL?