【发布时间】:2012-10-18 00:22:10
【问题描述】:
如果我有一个在 C 中定义如下的数组:
int B[d1][d2][d3][d4][d5][d6][d7][d8][d9];
然后很容易将“B”转换为一维。但是如果我在 C 中有一个数组,它的定义如下:
int********* A;
//which will be allocated as follows for example
A = (int*********) malloc(N*sizeof(int********));
for(int i=0; i<N; i++)
{
//differentSizes will be distinct for every "i"
//the same distinctness of sizes will be for every other
//inner parts of all inner for loops
compute(&differentSizes);
A[i] = (int********) malloc(differentSizes*sizeof(int*******));
for(...)
{
...
}
}
其中“A”对于每个维度都有非常大的大小,并且对于“A”的所有内部数组/子数组来说它们都是不同的。
我的问题:有没有一种有效的方法可以将“A”转换为一维?如果可能的话,你能举一个简单的例子吗?谢谢!
【问题讨论】:
-
什么是
int[d1][d2][d3][d4][d5][d6][d7][d8][d9] B;?您的意思是:int B[d1][d2][d3][d4][d5][d6][d7][d8][d9];? -
@Mike 抱歉,已更改,谢谢!
-
您的问题是“如何将分配为 A 的数组转换为像 B 的数组?”
-
旁注:写
A = malloc(N*sizeof(*A));而不是A = (int*********) malloc(N*sizeof(int********));。这样一来,它的可读性更高,更不容易出错,更不用说更短了。 -
@AShelly 不,我的问题是如何将像 A 这样的数组转换为一维数组。谢谢!
标签: c arrays multidimensional-array