数组只是一个连续的内存块,从某个已知地址开始.因此,如果起始地址是p,并且您想要访问i-th元素,那么您只需要计算:
p + i * size
Run Code Online (Sandbox Code Playgroud)
其中size在每个元件的尺寸(以字节为单位).
粗略地说,访问任意内存地址需要一段时间.
本质上,计算机内存可以被描述为一系列寻址槽。要制作一个数组,您需要留出一个连续的块。因此,如果您的阵列中需要 50 个插槽,则需要从内存中留出 50 个插槽。在此示例中,假设您为名为 A 的数组留出 1019 到 1068 的插槽。A 中的插槽 0 是内存中的插槽 1019。A 中的插槽 1 是内存中的插槽 1020。A 中的插槽 2 是内存中的插槽 1021,依此类推。所以,一般来说,要获得数组中的第 n 个插槽,我们只需执行 1019+n。所以我们需要做的就是记住起始槽是什么,并适当地添加进去。
如果我们想确保我们不会在数组末尾之外写入内存,我们可能还想存储 A 的长度并根据它检查我们的 n。还有一种情况是,并非我们希望跟踪的所有值都具有相同的大小,因此我们可能有一个数组,其中数组中的每个项目都占用多个插槽。在这种情况下,如果 s 是每个项目的大小,那么我们需要留出 s 倍数组中项目的数量,当我们获取第 n 个项目时,我们需要在开始添加 s 时间 n 而不仅仅是 n . 但在实践中,这很容易处理。唯一的限制是数组中的每个项目的大小都相同。
| 归档时间: |
|
| 查看次数: |
460 次 |
| 最近记录: |