这是关于方便.当然,内存实际上都是顺序的,但有时候人们希望能够访问具有两个索引的东西(例如实现矩阵).
考虑一个3x3阵列.想到这样的内存很方便:
----------------------------
| [0][0] | [0][1] | [0][2] |
|--------------------------|
| [1][0] | [1][1] | [1][2] |
|--------------------------|
| [2][0] | [2][1] | [2][2] |
----------------------------
Run Code Online (Sandbox Code Playgroud)
但在记忆中,它当然看起来像这样:
----------------------------------------------------------------------------------
| [0][0] | [0][1] | [0][2] | [1][0] | [1][1] | [1][2] | [2][0] | [2][1] | [2][2] |
----------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我们只是把它分成几行,这样我们就可以很容易地把它理解为二维的.我们使用两个参数访问它,因为我们想要,因为这对我们的代码来说很方便.该语言提供了这种实现,这使得可以通过两个索引进行访问,即使它是线性的,也可以用一个索引访问.
这张图片还应该帮助您理解为什么它可以被视为一个数组数组.这是一个略微修改过的图片,重点是:
|||--------------------------|||--------------------------|||--------------------------|||
||| [0][0] | [0][1] | [0][2] ||| [1][0] | [1][1] | [1][2] ||| [2][0] | [2][1] | [2][2] |||
|||--------------------------|||--------------------------|||--------------------------|||
Run Code Online (Sandbox Code Playgroud)
如您所见,那里有三个一维数组.因此,当您编写时array[1],您指的是完整二维数组的第二个一维组件,即内存中的第二组三个组件.添加第二个索引,array[1][2]获取该一维数组的第三个元素,根据需要将您转到二维数组的单个元素.