列主要顺序与行主要顺序的表示

Representation of Column major order vs Row major order

考虑一个包含以下值的二维数组 "Array":{1,2,3,4,5,6,7,8,9}。我对这两个订单的理解的主要问题是,如果 Row Major Order 表示为 Array[i,j] (而 i 是行,j 是列),

    [i0,j0][i0,j1][i0,j2]
    [i1,j0][i1,j1][i1,j2]
    [i2,j0][i2,j1][i2,j2]

因此,如果您被问到诸如 "find the address of element Array[1,2] in Array[2][2]" 之类的问题,您就会知道行数排在列数之前,并且很容易将它们放入公式中:

    Base(Address) + w(dataSize){N(i - Row_lowerBound)+(j - Col_lowerBound)}
    While 'N' is the number of columns

是不是表示列序可以用Array[j,i]来表示,也就是说列号先于行号出现。所以无法知道 Array[j][i](例如 Array[3][4])的 i,j,Row_lowerbound 和 Col_lowerbound 值应该放在公式中的什么位置.

例如,如果问题显示为:"Find the address of Array[1][2] in the array Array[3][4]"您怎么知道列数是 3 还是 4?你怎么知道 'i' 是 3 还是 4?

你不可能知道。计算机如何表示数据与您如何解释数据之间没有关系。由于您“自由”以您喜欢的方式解释它,因此您有责任知道哪个索引用于行,哪个索引用于列。

通常您可以在代码本身的注释中编写规范,或者使用该结构为函数编写文档。此外,您可以编写函数来访问强制索引顺序的数组。但是,它仍然不是立即明确的,但有一个好处,你可以检查越界访问。