2014-01-25 65 views
0

我有這樣的做法的問題:定義2D不規則陣列使用malloc

定義一個2D不規則陣列與整數的的malloc其中出昏暗= 4和內= 10,11,12,13。 (提示:使用for循環)

所以,我發現我可以寫一個2D不規則陣列這樣的int型的malloc:

INT(*陣列)[20] = malloc的((的sizeof *陣列)* 10);

這將是一個10x20陣列,我相信與amlloc。

我只是不確定如何使用for循環來將內部維度從10更改爲11到12更改爲13.任何幫助將不勝感激謝謝!

int j; 

for (int k = 0; k < 4; k++) 
{ 
    for (j = 10; j < 14; j++) 
    { 
     int (*array)[4] = malloc((sizeof *array) * j) 
    } 
} 

順便說一句,那接近正確嗎?

+0

每次執行一次外部'for'循環時,將1加到內部'for'循環的結尾值。 –

+0

我補充說的正確嗎? – user3234203

+0

是的,你只需要在第二個'for'中需要'j <10 + k'。看看這是如何工作的? –

回答

0

這有幫助嗎? 如果是這樣,請編輯http://en.wikibooks.org/wiki/C_Programming/Common_practices#Dynamic_multidimensional_arrays以使下一位學生更容易理解。

#include <stdio.h> 
#include <stdlib.h> 

const int rows = 20; 

int main(void) { 
    int **some_data; 
    // first, allocate a (column) Iliffe vector. 
    some_data = malloc((sizeof(*some_data)) * rows); 
    int i=0; 
    for(i = 0; i < rows; i++){ 
     // next, allocate each row. 
     // For no good reason, make each row a different size. 
     int columns = i+10; 
     some_data[i] = malloc((sizeof(**some_data)) * columns); 
    }; 
    some_data[3][13] = 9; 
    printf("%d\n", some_data[3][13]); 
    return 0; 
} 

如果通過,似乎是莫名其妙地流行時下鎖定的系統之一查看此,你會發現它方便地在一些網上的C編譯器,如http://ideone.com/http://codepad.org/http://www.compileonline.com/compile_c_online.php運行上面的代碼。