11.27 二维数组的动态分配

发布于 2024-11-27  88 次阅读


我记得前面写过一点点,但是忘了,现在再详细看看

在C语言中,二维数组可以被视为一个数组的数组

array[0] -> [0][0] [0][1] ... [0][m-1]
array[1] -> [1][0] [1][1] ... [1][m-1]
...
array[n-1] -> [n-1][0] [n-1][1] ... [n-1][m-1]

一个二维数组 array[n][m],它可以被看作是 n 个一维数组,每个一维数组的大小为 m

当我们使用指针的指针(int **array)时,我们实际上是在创建一个指向指针的数组。每个指针指向一个一维数组(即一行)

二维数组实际上是一个数组的数组,这其实可以看成指针数组(数组中的每一个元素都是一个行指针)


第一步

int **arr = (int **)malloc(n * sizeof(int *)); // 分配行指针数组

这一步分配的实际是行的个数

第二步,对每一行的数组分配列数组

for (int i = 0; i < n; i++) {
    arr[i] = (int *)malloc(m * sizeof(int));
}

这就是二维数组动态分配的全部操作

//如果你可以确定行数如int* in[6]; 则直接进行for循环的列数组的分配即可

in[6]=malloc(某某某),记得中括号和6不能掉

届ける言葉を今は育ててる
最后更新于 2024-11-27