资源描述:
《如何计算多维数组地址 数据结构》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、多维数组地址的计算方法一、二维数组C程序表示:A[j1][j2],其数据结构定义为:,j1=1,2,……,b1;j2=1,2,……,b2。内存存储排列如下图:[0]……[b2-1][0]……[b2-1]……………………[0]……[b2-1][0]……[b2-1]……………………[0]……[b2-1][0]……[1]……………………[ji][ji+1]……………………[b1-1]若求在内存中的存储位置:⒈在~段内的第j2的位置上;⒉前共有j1段,每段b2个存储单元,即;。因此的存储地址为(其中L为基本类型数据的字节数):二、三维数组C程序
2、表示:A[J1][J2][J3],其数据结构定义为:,j1=1,2,……,b1;j2=1,2,……,b2,j3=1,2,……,b3。内存存储排列如下图:………………………………………………[0]……[b3-1][0]……[b3][0]……[b3-1][0]……[b3-1]…………[0]……[b3-1][0]……[b3-1]…[j3]…[0]……[b3-1][0]……[b3-1]…………[0]……[b3-1][0]………………[b2--1][0]……………[b2-1][0]……[j2]…[b2--1][0]…………[b2--1][0][1
3、]:::::::::::::::::::::::::::[j1]::::::::::::::::::::::::::::::[b1-1]若求在内存中的存储位置,需根据各维下标的变化分段来计算:⒈当第一维下标为j1时,前共有j1段,其中每段内均可依次被划分成b2段,b2段又被划分成b3个已不可再分的最小基本类型数据单元,因此前第段前中共有个存储单元:⒉当第二维下标为j2时,在第至段内,本段内前共有j2段,其中每段内均可依次被划分成b3个已不可再分的最小基本类型数据单元,因此前第段前中共有个存储单元;⒊当第3维下标为j3时,在至段内,本内段
4、共有j3个最基本的基本类型的数据单元,即因此,的存储地址的字节数为(其中L为基本类型数据所占的字节数):三、多维数组C程序表示:A[J1][J2][……][Jn],其数据结构定义为:,j1=1,2,……,b1;j2=1,2,……,b2,………………,jn=1,2,……,bn。内存存储排列如下图:……………………………………………[0]…[bn-1]……………[0]…[bn-1][0]…[bn-1]…………[0]…[bn-1][0]…[bn-1]…………[0]…[bn-1][0]…[bn-1]…………[0]…[bn-1][0]…………[b
5、n-1-1][0]…………[bn-1-1][0]…………[bn-1-1][0]…………[bn-1-1]:::::::::::::::[ji]:::::::::::::::::::::::::::::::[ji]::::::::::::::::::::::::::[ji]:::::::::::::::::::::::::::::[bi-1]:::::::::::::::[0][1][j1]::::::::::::::::::::::::::::::[b1-1]若求在内存中的存储位置,需根据各维下标的变化分段来计算:⒈当第一维下标为j1时,
6、在至段内的位置上,其中前共有j1段,其中每段内均可依次被划分成b2段,b2段又被划分成b3段,b3段又可分为b4段,…………,如此划分下去,直至划分至bn个已不可再分的最小基本类型数据单元为止,因此前第段前中共有个存储单元:⒉当第二维下标为j2时,在第段内的至段内的,内前共有j2段,其中每段内均可依次被划分成b3段,b3段又可分为b4段,b4段又被划分成b5段,…………,如此划分下去,直至划分至bn个已不可再分的最小基本类型数据单元为止,因此前第段前中共有个存储单元;⒊……………………;⒋当第i维下标为ji时,在i-1维坐标下第段内
7、第至段内的,段内前共有ji段,其中每段内均可依次被划分成bi+1段,bi+1段又可分为bi+2段,bi+2段又可分为bi+3段,…………,如此划分下去,直至划分至bn个已不可再分的最小基本类型数据单元为止,因此前第段前中共有个存储单元⒌……………………⒍当第n维下标为jn时,在n-1维的至段内的第个位置上,本段内均为最基本的基本类型的数据单元,不能再继续划分,因此在本段内的共有个存储单元最终得出,的存储地址的字节数为(其中L为基本类型数据所占的字节数):