单选题
二维数组Amn按行序为主序存放在内存,每个数组元素占1个存储单元,则元素aij的地址计算公式是( )。
【正确答案】
A
【答案解析】二维数组就是平常所说的矩阵,也可以看成是数据元素是一维数组的一位数组。由于计算机内部存储器的地址是一维线性排列的,故在存储数据时,必须将二维数组转换为计算机的内部存储形式才可以。一般有两种存储方式:以行为主的存储方式(row—major)和以列为主的存储方式(column—major)。
设二维数组A[1:U1,1:U2],该数组有(U1-1)+1=U1行,有(U1-1)+1=U1列。设每个元素占d个空间,数组的起始地址为L1。
①以行为主(row—major):也称行优先存储。其特点为:以每一行为单位,一行一行地放入内存,如C语言、PASCAL语言等都是如此处理二维数组的。
②以列为主(column—major):也称列优先存储。其特点为:以每一列为单位,一列一列地放入内存,如Fortran语言就是如此处理二维数组的。二维数组A可以看成由U2个一维数组组成,每个一维数组有U1个元素。同1)类似,有:
*第j列数据元素的起始地址为:(j-1)×U1×d+L1
*数组元素A[i,j]的地址为:Loc(A [i,j])=L1+(j-1)×U1×d-6(i-1)×d
重要说明:二维数组Am*n的含义是:该数组有m行(0~m-1第一维),有n列(0~n-1,第二维),占用m*n个存储空间。假设每个数据元素占用L个存储单元(可理解为字节),则二维数组A中任意一个元素aij的存储位置为:
行优先:LOC(i,j)=LOC(0,0)+(n×i+j)×L
列优先: LOC(i,j)=LOC(0,0)+(m×j+i)×L
二维数组是一种随机存储结构,因为存取数组中任一元素的时间都相等.(单链表则不是,因为需要顺链访问,访问时间同数据元素的存储位置有关)。