【发布时间】:2012-11-12 03:58:54
【问题描述】:
如果我像这样分配一个二维数组 int a[N][N];它将分配一个连续的内存块。
但如果我尝试像这样动态地做:
int **a = malloc(rows * sizeof(int*));
for(int i = 0; i < rows; i++)
a[i] = malloc(cols * sizeof(int));
这会在行中的元素之间保持一个单位步长,但行之间可能不是这样。
一种解决方案是从 2D 转换为 1D,除此之外,还有其他方法吗?
【问题讨论】:
-
这不是一个 C 多维数组,它是一个指向不同行的指针数组。使用指向 C99 VLA 的指针。 Freaky way of allocating two-dimensional array?
标签: c arrays multidimensional-array