教资会网络 | 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)是正确的。
这个问题的测验