C语言,使用malloc分配和管理二维数组内存空间
#include <stdio.h>
#include <malloc.h>
int main() {
int ROW, COL;
printf("输入行数:");
scanf("%d", &ROW);
printf("输入字段数量:");
scanf("%d", &COL);
int **rows = (int **) malloc(ROW * sizeof(int *));
for (int i = 0; i < ROW; i++) {
rows[i] = (int *) malloc(COL * sizeof(int));
}
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
rows[i][j] = i * 10 + j;
}
}
for (int i = 0; i < ROW; i++) {
for (int j = 0; j < COL; j++) {
printf("%02d %p ", rows[i][j], &rows[i][j]);
}
putchar('\n');
}
printf("\n");
int **p = rows;
int *pd;
for (int i = 0; i < ROW; i++) {
pd = *p;
for (int j = 0; j < COL; j++) {
printf("%02d %p ", *pd, pd);
pd++;
}
putchar('\n');
p++;
}
for (int i = 0; i < ROW; i++) {
free(rows[i]);
}
free(rows);
return 0;
}
运行结果
C:\Users\wangw\CLionProjects\demo01\cmake-build-debug\a01.exe
输入行数:3
输入字段数量:3
00 00000248699d1470 01 00000248699d1474 02 00000248699d1478
10 00000248699d1490 11 00000248699d1494 12 00000248699d1498
20 00000248699d14b0 21 00000248699d14b4 22 00000248699d14b8
00 00000248699d1470 01 00000248699d1474 02 00000248699d1478
10 00000248699d1490 11 00000248699d1494 12 00000248699d1498
20 00000248699d14b0 21 00000248699d14b4 22 00000248699d14b8
Process finished with exit code 0