如何创建具有可变长度的多维数组

时间:2017-06-07 22:54:15

标签: c arrays multidimensional-array

我想创建一个具有可变大小的矩阵(相同的高度和宽度),这意味着高度和宽度取决于变量。现在我知道如何使用malloc / calloc保留存储,但我无法弄清楚如何使用malloc来创建二维数组。 或者有不同的方法来解决我的问题? 提前谢谢!

1 个答案:

答案 0 :(得分:0)

  

我无法弄清楚如何使用malloc来创建二维数组。

// Example of a 2D array.  malloc() cannot create this.
int TwoD[height][width];

malloc()可以为 int,数组等分配内存。它无法创建数组。 malloc()的结果是一个指针。所以从指针开始到2D数组。

// C99, C11
int (*a)[height][width];

a

分配内存
a = malloc(sizeof *a); 
assert(a); // Insure NULL was not retuned.

使用内存

(*a)[0][0] = 1;
(*a)[0][1] = 2;
// ... 
(*a)[height-1][width-1] = height*width;

完成后免费

free(a);