般n维数组的列主元存储地址计算公式 b1,b2,.,bn是n维的维界,数组元素A(j1,j2,,jn)的存储位置为 C[j1,j2,,jin]=LOC[0,0,,0]+(b2b b3 On Jn-1 in) L LOC[0,0,..,0]+(∑j∏bk+jn)L 例:在C语言中,设数组A[5][6][7][8]的首地址为2000, 每个元素占2个字节;求元素A[3][4][5][4]的地址 LOC[3,4,5,4]=2000+(6*7*8*3+7*8*4+8*5+4)*2 2000+(336*3+56*4+8*5+1*4)*2
一般n维数组的列主元存储地址计算公式 b1,b2,...,bn是n维的维界,数组元素A(j1,j2,...,jn)的存储位置为 LOC[j1,j2,...jn]= LOC[0,0,...,0] + (b2 b3 ... bn j1 + b3 ... bn j2 + ...... + bn jn-1 + jn ) L n-1 n = LOC[0,0,...,0] + ( ji bk + jn) L i=1 k=i+1 例: 在C语言中,设 数组A[5][6][7][8]的首地址为 2000, 每个元素占2个字节; 求元素A[3][4][5][4]的地址. LOC[3,4,5,4] = 2000 + (6*7*8*3 + 7*8*4 + 8*5 + 4)*2 = 2000 + ( 336*3 + 56*4 + 8*5 + 1*4)*2 = 2000 + (1008 + 224 + 40 + 4)*2 = 4552
列序为主序:( FORTRAN mxn (a1a21,1a31,…,am),(a12,a22a32,am2),,(a1n,a2na3n…,am) LOC[1,1]为基地址 LOC[i,j=L0C[1,1]+(m*(j1)+-1)米 (1<=<-m,1<=<n,每个数据元素占L个存储单元) 例5.2:若L=2,LOC[1,1]=1000 0C[3,4]=LOC[1,1]+(4*(4-1)+3-1)米 a11a12a13a14a15 22a23a24a25 1000+14*2 1028 a21 a32 a33 a24 a 41(424344045 LOC[0,O]为基地址 LOCLi, j]= LOC[0, 0]+(m*j+i)* (0<=i<=m,0<=j<=n,每个数据元素占L个存储单元 LOC[i,j,k]=LOC[0,0,0]+(m*(n米k)+j)+i1)米L
列序为主序: (FORTRAN) Amxn = ((a11,a21,a31,...am1),(a12,a22,a32,...am 2),...(a1n,a2n,a3n,...amn)) LOC[1,1] 为基地址: LOC[i,j] = LOC[1,1] + (m*(j-1)+i-1)*L (1<=i<=m, 1<=j<=n, 每个数据元素占L个存储单元) 例5.2: 若 L=2, LOC[1,1] = 1000 LOC[3,4] = LOC[1,1] + (4*(4-1)+3-1)*L = 1000 + 14 * 2 = 1028 LOC[0,0] 为基地址: LOC[i,j] = LOC[0,0] + (m*j+i)*L (0<=i<=m, 0<=j<=n, 每个数据元素占L个存储单元) LOC[i,j,k] = LOC[0,0,0] + (m*((n*k)+j)+i) *L a11 a12 a13 a14 a15 a21 a22 a23 a24 a25 a31 a32 a33 a34 a35 a41 a42 a43 a44 a45