2011-04-06 93 views

回答

2

float * mat2d = malloc(rows * cols * sizeof(float ));

从基质使用访问的值这adressing方案:

浮子VAL = mat2d [X + Y * COLS];

+0

谢谢,我假设,x和y是坐标和列引用列。 – Waypoint 2011-04-06 15:40:19

+0

@Hmyzak不客气。是的,我的意图是表明x,y是这个2d矩阵中的坐标。 – stacker 2011-04-06 16:24:23

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

务必从双数据类型更改为任何你需要的。