2014-01-25 36 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运行上面的代码。