c语言动态创建二维数组
时间: 2023-10-26 07:15:32 浏览: 155
动态创建二维数组的方法如下:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
int rows, cols, i, j;
int **arr;
printf("Enter number of rows: ");
scanf("%d", &rows);
printf("Enter number of columns: ");
scanf("%d", &cols);
//动态分配内存
arr = (int **) malloc(rows * sizeof(int *));
for (i = 0; i < rows; i++) {
arr[i] = (int *) malloc(cols * sizeof(int));
}
//给数组赋值
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
arr[i][j] = i * j;
}
}
//打印数组
for (i = 0; i < rows; i++) {
for (j = 0; j < cols; j++) {
printf("%d\t", arr[i][j]);
}
printf("\n");
}
//释放内存
for (i = 0; i < rows; i++) {
free(arr[i]);
}
free(arr);
return 0;
}
```
首先,通过`scanf`函数读入数组的行和列数。然后,使用`malloc`函数动态分配内存。在这里,我们首先分配一个指向指针的指针`arr`,大小为`rows`个指针。然后,我们为每一行分配`cols`个整数的内存。这样,我们就创建了一个`rows`行、`cols`列的二维数组。
接下来,我们通过两个嵌套的循环为数组赋值。最后,我们再次使用两个嵌套的循环打印数组。最后,我们使用`free`函数释放内存。
注意,动态分配的内存必须手动释放,否则可能会导致内存泄漏。
阅读全文