C 二维阵列,其中较大的阵列是动态的,较小的阵列不是动态的
在C语言中,如果我不知道编译时的行数,但知道列数,如何初始化数组 如果我想要一个非动态分配的数组,我输入C 二维阵列,其中较大的阵列是动态的,较小的阵列不是动态的,c,C,在C语言中,如果我不知道编译时的行数,但知道列数,如何初始化数组 如果我想要一个非动态分配的数组,我输入int2d_数组[128][128]
int2d_数组[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_数组=(int**)calloc(num_行,sizeof(int*);
对于(int i=0;i
但是如果我想要一个二维数组,其中行是动态的,而列不是动态的,该怎么办?我的直觉是int*2D_数组[128]代码>但这只会给我一个包含128行和动态分配列的2D数组。您可以一次分配整个数组。使用typedef
可以更容易地指定数组声明
typedef int[128] row;
row *twoD_array = calloc(num_rows, sizeof(row));
你可以一次分配整个东西。使用typedef
可以更容易地指定数组声明
typedef int[128] row;
row *twoD_array = calloc(num_rows, sizeof(row));
在这里,您试图访问2D_数组[行][列]。只有在取消引用行地址后,您才能通过访问任何列值。因此,如果我们更改为2D_数组[column][row],这是可能的。但我们需要在其余应用程序中更改数组的值访问逻辑。这里,您正在尝试访问2D_数组[row][column]。只有在取消引用行地址后,您才能通过访问任何列值。因此,如果我们更改为2D_数组[column][row],这是可能的。但是我们需要在剩下的应用程序中更改数组的值访问逻辑。标识符不能以数字开头。标识符不能以数字开头。int[128]行与代码>和int行[128]代码>?它是一个类型定义
,它将行
定义为int[128]
的别名代码>和int行[128]代码>?它是一个类型定义
,它将行
定义为int[128]
的别名。