问题 单项选择题

对于二维数组A[0…5,1…8],设每个元素占1个存储单元,且以列为主序存储,则元素A[3,6]相对于数组空间起始地址的偏移量是()。

A.9

B.18

C.29

D.33

答案

参考答案:D

解析:

若二维数组A[L1…U1,L2…U2]以列为主序存储,每个元素占用d个存储单元,则元素A[I,j]的存储位置相对于数组空间首地址的偏移量为((J-L2)×(U1-L1+1)+I-L1)×d。

对于二维数组A[0…5,1…8],设每个元素占1个存储单元,即d=1,L1=0,U1=5,L2=1,U2=8。若以列为主序存储,则元素A[3,6]相对于数组空间起始地址的偏移量为((J-L2)×(U1-L1+1)+I-L1)×d =((6-1)×(5-0+1)+3-0)×1=33。

另外,若二维数组A[L1…U1,L2…U2]以行为主序存储,每个元素占用d个存储单元,则元素A[I,J]的存储位置相对于数组空间首地址的偏移量为((I-L1)×(U2-L2+1)+J-L2)×d。

可见,若二维数组A[0…5,1…8]以行为主序存储,每个元素占1个存储单元,则元素A[3,6]相对于数组空间起始地址的偏移量是((3-0)×(8-1+1)+6-1)×1=29。

选择题
单项选择题