诸城哪里做网站,网站推广优化公司,wordpress4.3 撰写设置,优购物官方网站手机数组元素存储地址的计算
一维数组
设一维数组A[n]存放在n个连续的存储单元中#xff0c;每个数组元素占一个存储单元#xff08;不妨设为C个连续字节#xff09;.如果数组元素A[0]的首地址是L#xff0c;则A[1]的首地址是LC#xff0c;A[2]的首地址是L2C#xff0c;… …数组元素存储地址的计算
一维数组
设一维数组A[n]存放在n个连续的存储单元中每个数组元素占一个存储单元不妨设为C个连续字节.如果数组元素A[0]的首地址是L则A[1]的首地址是LCA[2]的首地址是L2C… …依次类推对于有 二维数组
二维数组的每个元素含两个下标如果将二维数组的第一个下标理解为行号第二个下标理解为列号然后按行列次序排列个元素则二维数组呈阵列形状。例如 它是一个行号为1~m列号为1~n的二维数组元素阵列。
如何保存二维数组
首先要确定一个顺序 第0行 第1行 第2行 第0列 第1列 第2列 设count为数组B中元素的个数则count9
按行优先存储 1 2 3 4 5 6 7 8 9 … … 第0行 第1行 第2行 按列优先存储 1 2 3 4 5 6 7 8 9 … … 第0列 第1列 第2列 地址如何计算
所谓按行优先顺序就是将数组元素按行向量的顺序存储第个行向量存储在第个行向量之后。
下面我们计算二维数组中任一元素A[i][j]的存储地址设每个数组元素所占空间为个连续字节。显然A[i][j]是第个行向量B[i]中的第个元素。 1 2 3 4 5 6 7 8 9 … … 第0行 第1行 第2行 在A[i][j]之前的元素个数为u分别是A[0][0]A[0][1]A[0][2]…A[0][n]A[1][0]A[1][1]A[1][2]…A[1][n]…A[i-1][0]A[i-1][1]A[i-1][2]…A[i-1][n]A[i][0]A[i][1]A[i][2]…A[i][j-1]
设每个数组元素所占空间为个连续字节。
则
LocA[i][j]LocA[0][0]u*C
u?
前i行第0行到第i-1行每行n个元素的元素个数第i行的元素个数A[i][0]到A[i][j-1]
因此ui*nj
故
LocA[i][j]LocA[0][0]u*C
LocA[0][0]i*nj*C
按列优先存储 1 2 3 4 5 6 7 8 9 … … 第0列 第1列 第2列 地址如何计算
在A[i][j]之前的元素个数为v分别是A[0][0]A[1][0]A[2][0]…A[m][0]A[0][1]A[1][1]A[2][1]…A[m][1]…A[0][j-1]A[1][j-1]A[2][j-1]…A[m][j-1]A[0][j]A[1][j]A[2][j]…A[i-1][j]
设每个数组元素所占空间为个连续字节。
则
LocA[i][j]LocA[0][0]v*C
v?
前j列第0列到第j-1列每列m个元素的元素个数第j列的元素个数A[0][j]到A[i-1][j]
因此vj*mi
故
LocA[i][j]LocA[0][0]v*C
LocA[0][0]j*mi*C
高维数组
按行优先“左”下标优先即第一最左下标的下标值较小的元素较先存储第一个下标值相同者按第二下标优先存储对任意的k1对第1~k-1维相同者先存储第k维中下标值较小者。
按列优先“右”下标优先最后一维下标为最右先存储第n维下标值较小者第n维下标值相同者先存储第n-1维下标值较小者。
三维数组D[3][3][4]的顺序存储次序是
元素表示为D[i][j][k] 其中0≤i≤20≤j≤20≤k≤3 可以把它看作一维数组
B1[3] { D[0][3][4]D[1][3][4]D[2][3][4]} D[0][3][4] i0
D[0][0][0]D[0][0][1]D[0][0][2]D[0][0][3]
D[0][1][0]D[0][1][1]D[0][1][2]D[0][1][3]
D[0][2][0]D[0][2][1]D[0][2][2]D[0][2][3] D[1][3][4] i1
D[1][0][0]D[1][0][1]D[1][0][2]D[1][0][3]
D[1][1][0]D[1][1][1]D[1][1][2]D[1][1][3]
D[1][2][0]D[1][2][1]D[1][2][2]D[1][2][3] D[2][3][4] i2
D[2][0][0]D[2][0][1]D[2][0][2]D[2][0][3]
D[2][1][0]D[2][1][1]D[2][1][2]D[2][1][3]
D[2][2][0]D[2][2][1]D[2][2][2]D[2][2][3] For x0 to 2 do For y0 to 2 do For z0 to 3 do
D[i][j][k]的地址
LocD[i][j][k]LocD[0][0][0]w*C
第一个下标的变化0到i-1共i*3*4个元素
第一个下标为i时第二个下标的变化0到j-1共j*4个元素
第一个下标为i第二个下标为j时第三个下标的变化0到k-1共k个元素
w i*3*4j*4k
LocD[i][j][k]LocD[0][0][0]w*C
LocD[0][0][0]i*3*4j*4k*C For z0 to 3 do For y0 to 2 do For x0 to 2 do j0 j1 j2 D[3][3][0] k0
D[0][0][0]D[1][0][0]D[2][0][0]
D[0][1][0]D[1][1][0]D[2][1][0]
D[0][2][0]D[1][2][0]D[2][2][0] j0 j1 j2 D[3][3][1] k1
D[0][0][1]D[1][0][1]D[2][0][1]
D[0][1][1]D[1][1][1]D[2][1][1]
D[0][2][1]D[1][2][1]D[2][2][1] j0 j1 j2 D[3][3][2] k2
D[0][0][2]D[1][0][2]D[2][0][2]
D[0][1][2]D[1][1][2]D[2][1][2]
D[0][2][2]D[1][2][2]D[2][2][2] j0 j1 j2 D[3][3][3] k3
D[0][0][3]D[1][0][3]D[2][0][3]
D[0][1][3]D[1][1][3]D[2][1][3]
D[0][2][3]D[1][2][3]D[2][2][3] For z0 to 3 do For y0 to 2 do For x0 to 2 do
D[i][j][k]的地址
LocD[i][j][k]LocD[0][0][0]w*C
第三个下标的变化0到k-1共k*3*3个元素
第三个下标为k时第二个下标的变化0到j-1共j*3个元素
第三个下标为k第二个下标为j时第一个下标的变化0到i-1共i个元素
w k*3*3j*3i LocD[i][j][k]LocD[0][0][0]w*C
LocD[0][0][0]k*3*3j*3i*C n维数组
For 0 to do For 0 to do … … … … For 0 to do s ?
的变化0~-1共***…**个元素
等于时的变化0~-1共**…**个元素
等于时等于时的变化0~-1共**…**个元素
… … … …
等于时等于时…等于时的变化0~-1共个元素
故
s***…*