没仔细看代码
我想说的是另外一个角度:
二维动态数组,也是可以用一维的数组来实现的,不需要进行二次的内存分配。
也就是分配一段内存,直接在逻辑视图上视为二维数组(视为三维、N维也是一样的)。
const int M = 3;
const int N = 5;
int* p = (int*)malloc(sizeof(int) * M * N);
for (int i = 0; i < (M * N); ++i) p[i] = i;
int(*a)[M][N] = (int(*)[M][N])p;
for (int row = 0; row < M; ++row) {
for (int col = 0; col < N; ++col) {
printf("%d ", (*a)[row][col]);
}
printf("\n");
}
free(p);
--
FROM 221.218.160.*