C 固定大小数组的动态数组
如何分配由固定大小的浮点数组组成的数组? 我试过这个:C 固定大小数组的动态数组,c,arrays,pointers,C,Arrays,Pointers,如何分配由固定大小的浮点数组组成的数组? 我试过这个: float **sub_uvs = malloc(sizeof(float [2]) * size * size); /* Seg. fault */ sub_uvs[0][0] = 0.3; sub_uvs[0][1] = 0.4; 您必须为第二个数组执行另一个单独的分配,可能需要使用另一个调用MEM\u allocN。您还必须使用平台提供的任何释放功能单独释放此内存 内存表示形式将完全不同,因此,即使在某些地方它在语法上更方便,但在任
float **sub_uvs = malloc(sizeof(float [2]) * size * size);
/* Seg. fault */
sub_uvs[0][0] = 0.3;
sub_uvs[0][1] = 0.4;
您必须为第二个数组执行另一个单独的分配,可能需要使用另一个调用
MEM\u allocN
。您还必须使用平台提供的任何释放功能单独释放此内存
内存表示形式将完全不同,因此,即使在某些地方它在语法上更方便,但在任何地方都很难做到这一点。可变大小的多维数组仍然很棘手。有几种选择:
malloc
,然后循环malloc
以生成每一行数组。但是,这是一个完全不同的数据结构float**a;
a=(浮动**)malloc(浮动*大小*行);
对于(int i=0;i什么是MEM_-mallocN
,为什么要使用它?谷歌说MEM_-mallocN
来自Blender,它需要一个大小和一个标记字符串。是的,我想可能会写这样的东西float**sub_-uvs=malloc(sizeof(两个float)*size*size);
,我将只使用一个结构。@MacelaruTiberiu问题是,**
表示指向数组的指针数组,但您试图将其用作一个多维数组。
float **a;
a = (float **)malloc(sizeof(float *) * size_row);
for(int i=0;i<size_row;i++)
{
a[i] = (float *)malloc(sizeof(float) * size_col);
}
a[0][0] = 0.4;
printf("%f",a[0][0]);