首页 > 解决方案 > 二维数组,其中较大的数组是动态的,较小的数组不是

问题描述

在C语言中,如果我不知道编译时的行数,但我知道列数,我该如何初始化数组?

如果我想要一个非动态分配的数组,我输入,int 2D_array[128][128];但如果我想要一个动态分配的数组,我输入

int** 2D_array = (int**)calloc(num_rows, sizeof(int*));
for (int i = 0; i < num_rows); i++) {
   2D_array[i] = (int*)calloc(num_columns, sizeof(int));
}

但是,如果我想要一个二维数组,其中行是动态的,但列不是动态的?我的直觉是int* 2D_array[128];,但这只会给我一个 128 行和动态分配列的二维数组。

标签: c

解决方案


在这里,您尝试访问 2D_array[row][column]。只有在引用行地址后才能访问任何列值。因此,如果我们更改为 2D_array[column][row],这是可能的。但是我们需要在其余应用程序中更改数组的值访问逻辑。


推荐阅读