我想问如果我们知道列数但不知道行数的值,是否可以使用 malloc 在 C 中分配一个数组。
int Array[runtime value][N];
我想问如果我们知道列数但不知道行数的值,是否可以使用 malloc 在 C 中分配一个数组。
int Array[runtime value][N];
是的。有几种方法可以做到这一点。
实际上不是运行时,但您不必指定一个维度:
int array[][3] = {{1,2,3}, {4,5,6}};
在堆栈上,rows
运行时变量在哪里:
int array[rows][COLUMNS];
在堆上使用malloc
,但不要忘记free
稍后调用:
int (*array)[COLUMNS];
array = malloc(rows*sizeof(int[COLUMNS]));
// ...
free(array);
是的。您可以动态分配一个:
// Allocate the columns
int** two_dimensional_array = malloc(COLUMNS * sizeof(int*));
// Find the number of rows on runtime
// however you please.
// Allocate the rest of the 2D array
int i;
for (i = 0; i < COLUMNS; ++i) {
two_dimensional_array[i] = malloc(sizeof(int) * ROWS);
}
或者,您可以在堆栈上有一个可变大小(C99):
int n;
scanf("%d", &n);
int arr[n][COLUMNS];