【发布时间】:2014-08-16 10:44:19
【问题描述】:
假设我们有以下设计:
typedef struct {
double **pdouble;
int *pint
}foo;
现在我要分配:
foo *pfoo;
问题是 pdouble 的总数是已知的,可以说它的 n;如果我们说 **pdouble 就像 pdouble [a][b],a 也是已知的。表示 a*b =n。但 b 是动态的。意味着 pdouble[1] 可能包含 b 列, pdouble[2] 可能包含 b' 列数,b 和 b',b" ... 将逐渐在程序中生成。 值得注意的是 b+b'+b"+ ... = n。 是否可以仅使用知道 n 和 a 来分配 foo?
我将对其进行一些编辑,这样我的问题就会变得更容易理解。
allocation_func(in size, int block_size)
foo *pfoo;
pfoo = (foo*) malloc(sizeof(foo))
/*some code here to do block_size number of *double which I don't know*/
foo->pdouble = (double**) malloc ( size * sizeof(double))
}
我忽略了每个人都知道的错误和其他必需的东西。
就这些了;
【问题讨论】:
-
"如果我们说 **pdouble 就像 pdouble [a][b]",那只是意味着我们根本不了解什么是指针,什么是数组。
-
您可以分配
foo,而无需了解关于 a、n、b 等的任何信息。它是一个结构。foo似乎与您的 real 问题似乎无关,即理解指针和数组之间的区别,以及管理动态指针数组。 -
令人困惑的问题。只需简单的分配即可。
-
感谢您不理解这个问题,只是争论为什么有人应该提出这样一个愚蠢的问题。
-
在这个
c代码pfoo =(foo*) malloc(sizeof(foo))中转换成(foo*)还有什么意义?
标签: c multidimensional-array malloc dynamic-arrays