📌  相关文章
📜  教资会网络 | UGC NET CS 2015 年 12 月 – II |问题 16

📅  最后修改于: 2022-05-13 01:57:56.520000             🧑  作者: Mango

教资会网络 | UGC NET CS 2015 年 12 月 – II |问题 16

'C' 中的一个三维数组被声明为 int A[x][y][z]。考虑到数组元素以行主要顺序存储并且索引从 0 开始。这里,位置 A[p][q][r] 处的项目的地址可以如下计算(其中 w 是整数):

(A) &A[0][0][0] + w(y * z * q + z * p + r)
(B) &A[0][0][0] + w(y * z * p + z*q + r)
(C) &A[0][0][0] + w(x * y * p + z * q+ r)
(D) &A[0][0][0] + w(x * y * q + z * p + r)答案:(乙)
解释:根据上面的问题,我们必须找到 A[p][q][r] 的地址

要到达第 p 行,我们必须跨越 0 到 p-1 行,即 p 行,每行包含 y∗z 个元素

因此 ,

= y∗z∗p

现在要到达第 p 行中的第 q 个元素,我们必须跨越 q 行,每行包含 z(总列)个元素

=z∗q

要到达第 r 个元素,我们必须在第 (p+1) 行中交叉 r 个元素

要交叉的总元素 =(y∗z∗p+z∗q+r)

现在每个元素在内存中占用 m 个空间

因此这些元素占用的总空间 = m(y∗z∗p+z∗q+r)

因此,A[p][q][r]的地址=基地址+之前元素占用的空间。

=&A[0][0][0]+m(y*z*p+z*q+r)

因此选项(B)是正确的。
这个问题的测验