有什么办法如何在C中malloc()
一个二维矩阵?我已成功尝试malloc()
1D字段,但在矩阵中我遇到错误。
答案 0 :(得分:2)
float * mat2d = malloc(rows * cols * sizeof(float ));
从矩阵中访问值使用此地址方案:
float val = mat2d [x + y * cols];
答案 1 :(得分:1)
如果在编译时不知道数组的大小,则必须使用循环为每行分配内存。
以下是我找到的一些示例代码:
double** allocate2D(int nrows, int ncols) {
int i;
double **dat2;
/* allocate array of pointers */
dat2 = malloc( nrows*sizeof(double*));
if(dat2==NULL) {
printf("\nError allocating memory\n");
exit(1);
}
/* allocate each row */
for(i = 0; i < nrows; i++) {
dat2[i] = malloc( ncols*sizeof(double));
}
if(dat2[i-1]==NULL) {
printf("\nError allocating memory\n");
exit(1);
}
return dat2;
}
来自here
请务必将数据类型从double更改为您需要的任何内容。