gpt4 book ai didi

c - 为矩阵动态分配数组

转载 作者:行者123 更新时间:2023-11-30 15:07:35 25 4
gpt4 key购买 nike

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

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 吗?

编辑****

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;
}

最佳答案

    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* 分配内存
  3. 对于第 1 步中的每个 float*,我们分配内存来存储第 2 步中的 cols float

关于c - 为矩阵动态分配数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38156044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com