-2

考虑一个包含值的二维数组“数组”:{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]

因此,如果您被问到诸如“在 Array[2][2] 中查找元素 Array[1,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 值应放在公式中的什么位置。

例如,如果问题显示为:“在数组 Array[3][4] 中查找 Array[1][2] 的地址”您如何知道 3 是列数还是 4?你怎么知道'i'是3还是4?

4

1 回答 1

0

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

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

于 2018-02-28T13:04:55.147 回答