设有二维数组A[8][10],按行序优先存储,且每个元素占用2个存储单元,若第一个元素的存储起始位置为b,则存储位置为b+20处的元素为( )。

设有二维数组A[8][10],按行序优先存储,且每个元素占用2个存储单元,若第一个元素的存储起始位置为b,则存储位置为b+20处的元素为( )。


【正确答案】:A[1][0]
【题目解析】:

对于二维数组a[m][n],如果每个元素占k个存储单元,以行为主序为例,讨论数组元素a[i] [j]位置与下标的关系。
由于下标从0开始,元素a[i] [j]之前已经有i行元素,每行有n个元素,在第i行, 有j+1个元素,总共有n*i+j+1个元素,第一个元素与a[i] [j]相差n*i+j+1-1个位置, 故 a[i] [j]的位置为:loc[i, j]=loc[0,0]+(n*i+j)*k。

本题中,k=2,n=10,故有: 

loc[i, j]=b+(n*i+j)*2=b+20,故有10i+j=10,即j=10-10i。

又因为:计算行索引,将偏移量除列宽取整后获得,且一个元素占2存储单元,故i=20/(n*2)=1 。代入j=10-10i=0。故表示a[1][0]的存储位置。


Top