在 C 中,在数组中说A[2][3]
最右边的索引更改导致最小的内存地址偏移,即元素位于内存中A[0][0], A[0][1]...
.NET 中的矩形数组也是如此吗?如果我们有,说数组a[2, 3]
是位于内存中的元素a[0, 0], a[0, 1]...
吗?
在 C 中,在数组中说A[2][3]
最右边的索引更改导致最小的内存地址偏移,即元素位于内存中A[0][0], A[0][1]...
.NET 中的矩形数组也是如此吗?如果我们有,说数组a[2, 3]
是位于内存中的元素a[0, 0], a[0, 1]...
吗?
CLI 规范第8.9.1 节规定:
数组元素应在数组对象中按行优先顺序排列(即,与最右边数组维度相关的元素应从最低索引到最高索引连续排列)。为每个数组元素分配的实际存储空间可以包括特定于平台的填充。
所以答案是肯定的——你会首先遇到第一行的所有元素,然后是第二行的所有元素,等等(正如规范所说,这称为row-major order)。