使用malloc定义2D不规则数组

时间:2014-01-25 03:23:13

标签: arrays malloc heap

我有这个练习题:

定义一个带有malloc of int的2D不规则数组,其中out dim = 4,inner = 10,11,12,13。 (提示:使用for循环)

所以,我意识到我可以写一个2D不规则数组,其中包含像这样的整数:

int(* array)[20] = malloc((sizeof * array)* 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)
    }
}

顺便说一句,那是否接近正确?

1 个答案:

答案 0 :(得分: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/或{{3 }或http://codepad.org/