【发布时间】:2020-11-02 04:10:39
【问题描述】:
在逻辑上,对于一个 3d 数组,我们需要先访问外部数组,然后在每个维度内部工作,然后访问数组的元素。由于物理内存将数组存储为一块内存,而不管其尺寸如何,我们可以使用它的地址直接访问,因为有办法获取内存位置吗?
如果一个多维数组作为一维数组存储在物理内存中,如果我们知道内存地址,我们是否可以直接访问该数组的深层元素?
【问题讨论】:
-
是c语言
-
数组是如何定义的?
-
如果它是一个真正的 3D 数组,那么是的,您所需要的只是能够访问数组中所有元素的起始地址和数组维度。实际上,数组
[]表示法只是一种方便的语法,并转换为相同的内存地址计算。 -
假设您有一个
array[x][y][z],其中x、y、z是维度。要从外部二维数组中处理,您可以执行int i = 0, j = x-1;然后while (i < j) { /* work with array[j][y][z] and array[i][y][z], then i++, j-- */ }您添加i == j的特殊情况,并且如果x是奇数,则仅处理最终的二维数组一次。
标签: arrays c multidimensional-array data-structures memory-management