所以我试图分配一个数组来保存浮点数矩阵。传入的值是整数(行和列),函数是指针。所以这是我的功能定义:
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;
}
答案 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
}
备注强>
float*
s float*
,我们在第2步中分配内存以存储 cols float