2d动态数组(在C中),每行具有特定的行号和不同的列大小

时间:2013-10-22 12:16:45

标签: c arrays dynamic 2d

如何在每行中创建具有特定行号和不同列大小的2d动态数组(在C中)?

例如: 这是一个数组(3 =行)

|1   |   4   |   5   |

|3   |   

|6   |   2   |

第1行 - 3列

第2行 - 1列

第3行 - 2列

我希望我的程序在运行时向用户询问每一行以给出cols的数量。 我如何制作这样的数组?

3 个答案:

答案 0 :(得分:0)

您可能希望使用指针指针并为每行分配足够的内存。例如:

int  ** array = calloc(sizeof(*array), NUMROWS);
array[0] = calloc(sizeof(**array), 3); // 3 fields
array[1] = calloc(sizeof(**array), 1); // 1 field
array[2] = calloc(sizeof(**array), 2); // 2 fields

答案 1 :(得分:0)

如果你想要一些动态的东西并且不关心持续的访问时间,你可以创建一个链表的数组,否则你别无选择,只能分配一些有足够内存的空间并用realloc保持更新。

答案 2 :(得分:0)

你需要一个指针数组:

int *ptr_array[3];

然后对于每一行,您需要分配内存:

int map_array[3] = {3,1,2}
int i;

for(i = 0; i < 3; i++){
    ptr_array[i] = malloc(sizeof(int)*map_array[i]);
}

如果您需要动态行数,则应将第一部分作为:

int **ptr_ptr_array;

(*ptr_ptr_array) = malloc(sizeof(int *)*3);

好好回收记忆。