【发布时间】:2013-07-09 04:25:04
【问题描述】:
我在理解 C 如何为 2D(或更多维)数组分配空间时遇到问题,尤其是当我们使用 malloc 等时。以this question中的程序为例。
首先定义一维指针数组,然后将指向一维数据数组(在本例中为字符串)的指针放入第一个一维数组的每个框中。所以不能保证整个二维数组是连续的(前一行的最后一个单元格后面跟着下一行的第一个单元格)。每个一维数据数组可以很远,只有它们的指针是连续的。我是正确的还是我错过了什么?如果您能帮助我澄清这一点,我将不胜感激。
【问题讨论】:
-
另一种分配二维数组的方法是使用单个缓冲区,然后根据二维坐标对其进行索引。 8 * 8 = 64。分配单个 64 字节缓冲区和索引 = x + y * 8
-
所以像上面的问题那样定义一个二维数组确实是不连续的。谢谢。我了解如何关联 8x8=64 空间,你能给我举个例子,我如何根据 2D 坐标对其进行索引吗?谢谢。