我有一个自定义数据类型的二维数组,比如
struct element_t ** arr
如何使用malloc()为此数组的单个元素(arr [i] [j])分配空间?提前谢谢。
答案 0 :(得分:1)
您可以执行以下操作:
struct element_t **arr;
arr = malloc(N * sizeof(*arr));
for (int i = 0; i < N; ++i) {
arr[i] = malloc(X * sizeof(*arr[i]));
}
其中N是双数组的大小,X是每个数组的大小;
答案 1 :(得分:0)
这取决于您希望如何分配内存。如果你想要一块连续的内存,那么
arr = malloc(nrows * sizeof(*arr));
arr[0] = malloc(nrows * ncolumns * sizeof(struct element_t));
for(int i = 1; i < nrows; i++)
arr[i] = arr[0] + i * ncolumns;
对于非连续的
arr = malloc(nrows * sizeof(*arr));
for(int i = 0; i < nrows; i++)
arr[i] = malloc(ncolumns * sizeof(struct element_t));
有关详细说明,请阅读How can I dynamically allocate a multidimensional array?