c - 如何创建可变长度的多维数组

标签 c arrays multidimensional-array

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

最佳答案

I can't figure out how to use malloc to create a two-dimensional array.

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

malloc()可以为int、数组等分配内存。它不能创建数组。 malloc() 的结果是一个指针。因此,从指向二维数组的指针开始。

// 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);

关于c - 如何创建可变长度的多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44424013/

相关文章:

c - 将字符串添加到字符串数组时打印 ����

c - 什么时候匿名结构和 union 在 C11 中有用?

c - "realloc(): invalid next size"多次成功运行后

arrays - 如何在二维数组中查找和存储值组?

php - 将对象数组合并到具有唯一对象的数组中

c - ffmpeg c api 中的 av_register_all() 与 avcodec_register_all() 有什么区别?

javascript - 合并/展平数组数组

c : multidimensional array using 1d array under the covers

c++ - 如何在C++中返回二维数组

C++ 声明一个基于非常量变量的数组?