-4

我想问如果我们知道列数但不知道行数的值,是否可以使用 malloc 在 C 中分配一个数组。

int Array[runtime value][N];
4

2 回答 2

2

是的。有几种方法可以做到这一点。

实际上不是运行时,但您不必指定一个维度:

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);
于 2013-07-25T06:07:38.190 回答
1

是的。您可以动态分配一个:

// 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];
于 2013-07-25T06:05:47.000 回答