1

如何制作具有特定行号和每行不同列大小的二维动态数组(在 C 中)?

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

|1   |   4   |   5   |

|3   |   

|6   |   2   |

第一行 - 3 列

第 2 行 - 1 列

第 3 行 - 2 列

我希望我的程序在运行时询问用户每一行的列数。如何制作这样的数组?

4

3 回答 3

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
于 2013-10-22T12:19:34.880 回答
0

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

于 2013-10-22T12:21:29.303 回答
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);

祝你好运回收内存。

于 2013-10-22T12:56:25.147 回答