【发布时间】:2020-03-21 08:57:00
【问题描述】:
我试图在 C 中寻找在堆上分配二维数组的方法,但遇到了以前从未见过的东西。我通常分配二维数组的方法是创建一个指针数组,然后用指向其他数组的指针填充该数组。我想了解的是这条线
int (*array)[cols] = malloc(rows * sizeof(*array));
这是我目前对它的理解:
1) 我们在堆上为我们想要的所有行分配一些空间,乘以单个列的大小。
2) malloc() 然后返回一个指向堆上该地址的指针,然后我们将其分配给 (*array)?
我的困惑主要源于 (*array) 的使用。有人可以告诉我为什么我们可以在这种情况下使用 (*array) 吗?另外,为什么sizeof(*array) 会返回每列的大小(以字节为单位)?
【问题讨论】:
标签: c arrays pointers multidimensional-array malloc