Arrays 当我们尝试访问数组元素时会发生什么?

Arrays 当我们尝试访问数组元素时会发生什么?,arrays,associative-array,Arrays,Associative Array,你可以通过看标题猜出我的意思。 我正在研究一些对聚合数据类型(如数组)进行操作的算法。我可以非常自信地说,我知道什么是数组以及我们为什么使用它们。但我不知道它们内部是如何工作的。例如,当我这样做时会发生什么: anArray [10]; 幕后发生了什么?我的计算机是直接到达第10个索引(似乎非常高效),还是从0开始,向前走直到找到[10]才到达索引10。如果它直接执行,那么关联数组呢?关联数组中的键可以是字符串,对吗?计算机是否尝试从左到右匹配键,或直接到达我们用方括号括起来的索引/键 在普通

你可以通过看标题猜出我的意思。 我正在研究一些对聚合数据类型(如数组)进行操作的算法。我可以非常自信地说,我知道什么是数组以及我们为什么使用它们。但我不知道它们内部是如何工作的。例如,当我这样做时会发生什么:

anArray [10];
幕后发生了什么?我的计算机是直接到达第10个索引(似乎非常高效),还是从0开始,向前走直到找到[10]才到达索引10。如果它直接执行,那么关联数组呢?关联数组中的键可以是字符串,对吗?计算机是否尝试从左到右匹配键,或直接到达我们用方括号括起来的索引/键

在普通数组(FORTRAN、C、Java数组)中,您可以直接访问索引位置,而无需对其他元素进行任何迭代。对于一维数组,数组索引乘以数组成员大小,给出直接内存偏移量(从数组开始计数)。FORTRAN使用了
等价
运算符将1D数组放置在2D数组上(相同的内存位置),因此很明显这些数组是如何放置的。C还允许通过指针访问数组,很明显,内存偏移量只是索引乘以元素的大小


有些语言引入的“数组”更像其他数据结构(映射)。它们通常通过哈希表实现,具有恒定的访问时间-比直接访问慢,但不太依赖于数组中的元素数。

这主要取决于您使用的语言,但在大多数情况下,它将直接进入数组的第10个存储单元