我有这个阵列:
float (*probability)[4];
这是二维数组,但我不知道第一个[]的数目,这可以在某个函数中计算,在那个函数中,我不知道如何
malloc()
这个数组。我的代码是这样的:
int main(int argc, char ** argv){
float (*probability)[4];
some_function_to_malloc(&probability);
return 0;
}
最佳答案
首先,float (*probability)[4]
不是二维数组。它是指向包含四个float
的一维数组的指针。它们是不同的东西。
第二,在不引入意外类型错误的情况下使用malloc()
的习惯用法是
probability = malloc(sizeof (*probability) * number_desired);
在带有传递参数的函数中执行此操作将
void some_function_to_malloc(float (**probability)[4])
{
*probability = malloc(sizeof(**probability) * number_desired);
}
不要忘记
#include <stdlib.h>
以便使用malloc()
。关于c - 如何在C中分配数组2D,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38448844/