Arrays 三维数组中的元素地址

Arrays 三维数组中的元素地址,arrays,data-structures,Arrays,Data Structures,我正在寻找公式,以查找行主数组和列主数组的三维数组中元素的内存位置。在使用我的逻辑之后,我得到了以下公式。 假设数组是A[L][M][N] 行主修:Loc(A[i][j][k])=base+w(M*N(i-x)+N*(j-y)+(k-z)) 主列:Loc(A[i][j][k])=base+w(M*n(i-x)+M*(k-z)+(j-y)) 其中x,y,z是第一(L)第二(M)和第三(N)个索引的下界。 我尝试了这个公式,得到了正确的结果,但当我把这个公式应用到书中的一个问题上时,答案并不匹配。请

我正在寻找公式,以查找行主数组和列主数组的三维数组中元素的内存位置。在使用我的逻辑之后,我得到了以下公式。 假设数组是
A[L][M][N]

行主修:
Loc(A[i][j][k])=base+w(M*N(i-x)+N*(j-y)+(k-z))

主列:
Loc(A[i][j][k])=base+w(M*n(i-x)+M*(k-z)+(j-y))

其中x,y,z是第一(L)第二(M)和第三(N)个索引的下界。 我尝试了这个公式,得到了正确的结果,但当我把这个公式应用到书中的一个问题上时,答案并不匹配。请任何人帮我解决这个问题。

正确的答案是:

row-major:Loc(A[i][j][k])=base+w(N*(i-x)+(j-y)+M*N(k-z))
column-major:Loc(A[i][j][k])=base+w((i-x)+M*N(k-z)+M*(j-y))
三维阵列的计算公式 行主订单: 地址

A[I, J, K] = B + W * [(D - Do)*RC + (I - Ro)*C + (J - Co)] A[I, J, K] = B + W * [(D - Do)*RC + (I - Ro) + (J - Co)*R] A[I,J,K]=B+W*[(D-Do)*RC+(I-Ro)*C+(J-Co)] 列主要顺序: 地址

A[I, J, K] = B + W * [(D - Do)*RC + (I - Ro)*C + (J - Co)] A[I, J, K] = B + W * [(D - Do)*RC + (I - Ro) + (J - Co)*R] A[I,J,K]=B+W*[(D-Do)*RC+(I-Ro)+(J-Co)*R] 其中:

  • B=基址(起始地址)
  • W=重量(数组中存储的一个元素的存储大小)
  • R=行(总行数)
  • C=列(总列数)
  • D=宽度(沿深度方向的单元格总数)
  • Ro=行的下限
  • Co=列的下限
  • Do=宽度下限

以下是一些指导原则。提供的答案可能是正确的,但可以从解释中获益。仅代码答案不被视为“好”答案。从中,我认为列major的公式应该是
base+w((I-x)+L*(j-y)+L*M*(k-z))
。或者我错了。请参考:以正确和清晰地理解多维数组、行和列的主要表示形式