我有这个阵列:

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/

10-10 22:35