显然,二维数组同样满足数组的定义。一个 二维数组可以看作是每个数据元素都是相同类 型的一维数组的一维数组。以此类推任何多维 数组都可以看作一个线性表,这时线性表中的每 个数据元素也是一个线性表。多维数组是线性 表的推广
显然,二维数组同样满足数组的定义。一个 二维数组可以看作是每个数据元素都是相同类 型的一维数组的一维数组。以此类推,任何多维 数组都可以看作一个线性表,这时线性表中的每 个数据元素也是一个线性表。多维数组是线性 表的推广
对于二维数组来说由于计算机的存储结构是线 性的如何用线性的存储结构存放二维数组元素就 有一个行/列次序排放问题。 以行序为主序的存储方式:即先存储第1行,然 后紧接着存储第2行,最后存储第m行。此时,二维数 组的线性排列次序为: a 1,1a1,29a1,na2,1a2,2°a2,nam,1%am,2am,n
对于二维数组来说,由于计算机的存储结构是线 性的,如何用线性的存储结构存放二维数组元素就 有一个行/列次序排放问题。 以行序为主序的存储方式:即先存储第1行,然 后紧接着存储第2行,最后存储第m行。此时,二维数 组的线性排列次序为: a1,1 ,a1,2 ,…,a1,n,a2,1 ,a2,2 ,…,a2,n,…,am,1 ,am,2 ,…am,n
对一个已知以行序为主序的计算机系统中当二 维数组第一个数据元素a1的存储地址LOC(a1)和每 个数据元素所占用的存储单元k确定后则该二维数组 中任一数据元素a;的存储地址可由下式确定: LoC(a)=LoC(a1,)+(i-1)*n+-1)k 其中n为列数
对一个已知以行序为主序的计算机系统中,当二 维数组第一个数据元素a1,1的存储地址LOC(a1,1 )和每 个数据元素所占用的存储单元k确定后,则该二维数组 中任一数据元素ai,j的存储地址可由下式确定: LOC(ai,j)=LOC(a1,1 )+[(i-1)*n+(j-1)]*k 其中n为列数
同理可推出在以列序为主序的计算机系统中有: LoC(a;j=LOC(a1)+(0-1)m+(1-1)*k 其中m为行数
同理可推出在以列序为主序的计算机系统中有: LOC(ai,j)=LOC(a1,1 )+[(j-1)*m+(i-1)]*k 其中m为行数
例51对二维数组们oata54计算: (1)数组a中的数组元素数目; (2)若数组a的起始地址为2000且每个数组元素长度 为32位(即4个字节),数组元素a3]2的内存地址
例5.1 对二维数组float a[5][4]计算: (1)数组a中的数组元素数目; (2)若数组a的起始地址为2000,且每个数组元素长度 为32位(即4个字节),数组元素a[3][2]的内存地址