我使用多个维度阵列目前卡住与传统代码:C:静态到动态分配在多个维数组
#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);
利用这一点,我得到一个错误:使用该表时(“错误下标值既不是数组也不指针也不矢量”)。
XXX = Table [a][b][c][d][e][f];
遗产代码想要什么?什么是错误? – jpalecek
使用每个维度的表格。目前我得到的错误是“下标值既不是数组也不是指针也不是矢量”,这可能来自我的typedefs或malloc,这就是为什么我没有发布我正在尝试的代码。 – claf
如果遗留代码将此表视为多维数组,我不会看到它如何处理您的解决方案与非连续的内存区域,因为它会尝试通过简单的解引用访问您的表。 –