#include <stdio.h>
#include <stdlib.h>
int main() {
int rows, cols;
printf("请输入行数: ");
scanf("%d", &rows);
printf("请输入列数: ");
scanf("%d", &cols);
// 使用二级指针创建动态二维数组
int **arr = (int **)malloc(rows * sizeof(int *));
if (arr == NULL) {
printf("内存分配失败\n");
return 1;
}
for (int i = 0; i < rows; i++) {
arr[i] = (int *)malloc(cols * sizeof(int));
if (arr[i] == NULL) {
// 如果某一行分配失败,释放之前已分配的行
for (int j = 0; j < i; j++) {
free(arr[j]);
}
free(arr);
printf("内存分配失败\n");
return 1;
}
}
// 填充数据
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
arr[i][j] = i * cols + j;
}
}
// 打印二维数组
printf("二维数组内容:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%d ", arr[i][j]);
}
printf("\n");
}
// 释放内存
for (int i = 0; i < rows; i++) {
free(arr[i]);
}
free(arr);
return 0;
}