二维数组 A[8] [9] 按行优先顺序存储, 若数组元素 A[2] [3] 的存储地址为1087, A[4][7] 的存储地址为 1153, 则每个数组元素占用的存储单元的个数是( ) 。
【正确答案】:3
【题目解析】:
对于二维数组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。
本题中,对于二维数组 A[8][9],n=9,故:
loc[2,3]=loc[0,0]+(2*9+3)*k=1087
loc[4,7]=loc[0,0]+(4*9+7)*k=1153
解二元一次方程可得:k=3。