为矩阵动态分配数组

时间:2016-07-02 02:50:48

标签: c arrays dynamic-allocation

所以我试图分配一个数组来保存浮点数矩阵。传入的值是整数(行和列),函数是指针。所以这是我的功能定义:

float *matrix(int rows,int cols)
{
    int i=0;
    float *m=NULL;
    m=(float *)malloc(rows*sizeof(int));
    for (i=0;i<rows;i++)
    {
        m[i]=(float*)malloc(cols*sizeof(int));
    }   
}
我觉得这是错的。我尝试运行时也遇到错误。 问题究竟在哪里? int应该是浮点数吗?

编辑****

float *matrix(int rows,int cols)
{
    int i=0;
    float **m=NULL;
    m=(float *)malloc(rows*sizeof(float));
    for (i=0;i<rows;i++)
    {
        m[i]=(float *)malloc(cols*sizeof(float));
    }
}

好吧,如果malloc运行不正常并且失败,我不会返回NULL。 所以它应该是这里的代码,对吗?

if(m[i]==NULL)
{
    return NULL;
}

1 个答案:

答案 0 :(得分:1)

    int i=0;
    float **m; // You are looking for a pointer to pointer to float
    m=malloc(rows*sizeof(float*)); //Step1
    for (i=0;i<rows;i++)
    {
        m[i]=malloc(cols*sizeof(float)); //Step2
    }   

备注

  1. 由于[ this ]回答中提到的原因,您无需投射malloc的输出。
  2. 在第1步中,您为 float* s
  3. 分配内存
  4. 对于步骤1中的每个float*,我们在第2步中分配内存以存储 cols float