列主要订单与行主要订单的表示

问题描述 投票:-2回答:1

考虑一个包含值的二维数组“Array”:{1,2,3,4,5,6,7,8,9}。理解这两个命令的主要问题是如果行主要顺序要表示为Array [i,j](而我是行,j是列),

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

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

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

c multidimensional-array row-major-order column-major-order
1个回答
0
投票

你无法知道。计算机如何表示数据与您如何解释数据之间没有关系。由于您可以“自由”地按照自己喜欢的方式对其进行解释,因此您有责任知道哪个索引用于行,哪个索引用于列。

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

© www.soinside.com 2019 - 2024. All rights reserved.