设数组a[1..n,1..m] (n>1,m>1)中元素以列为主序存放,每个元素占用2个存储单元,则数组元素a[i,j](1≤i≤n,i≤j≤m)相对于数组空间首地址偏移量为( )。
- A.((i-1)*m+j-1)*2
- B.((i-1)*n+j-1)*2
- C.((j-1)*m+i-1)*2
- D.((j-1)*n+i-1)*2
正确答案及解析
正确答案
D
解析
数组 a[1..n,1..m] (n>1, m>1)如图所示:数组元素存储地址=数组空间首地址+偏移量。其中偏移量计算方式为排列在所访问元素之前元素个数乘以每个元素占用存储单元数。
对于元素a[i,j],在按列存储(以列为主序存放)方式下,先排列元素,第j列之前已经有(j-1)*n个元素已排满,第i行前有(i-1)个元素,所以该元素之前元素个数为(j-1)*n+i-1,每个元素占用2个存储单元,所以相对于数组空间首地址偏移量为((j-1)*n+i-1)*2。