2011-04-06 132 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

務必從雙數據類型更改爲任何你需要的。