1、一维数组
设数组为A = a1,a2,a3,a4…ai…an;
每个数据元素占d个存储单位,则元素a[i]的存储地址为
L
o
c
(
A
[
i
]
)
=
L
o
c
(
A
[
1
]
)
+
(
i
−
1
)
∗
d
L
o
c
(
A
[
i
]
)
=
L
o
c
(
A
[
1
]
)
+
(
i
−
1
)
∗
d
Loc(A[i]) = Loc(A[1]) + (i-1)*dLoc(A[i])=Loc(A[1])+(i−1)∗d
Loc(A[i])=Loc(A[1])+(i−1)∗dLoc(A[i])=Loc(A[1])+(i−1)∗d
2、二维数组
二维数组A[m][n]如图所示,
• 以“行序存储为主”,首元素 A[1][1] 的地址为
L
o
c
(
A
[
1
]
[
1
]
)
L
o
c
(
A
[
1
]
[
1
]
)
\ Loc(A[1][1])Loc(A[1][1])
Loc(A[1][1])Loc(A[1][1]),每个元素占 d 个存储单元,求 A[i][j];( A[i][j] 有
i
−
1
\ i-1
i−1 行,即
(
i
−
1
)
∗
n
(
i
−
1
)
∗
n
\ (i-1)*n(i−1)∗n
(i−1)∗n(i−1)∗n个元素,j 列前有
j
−
1
j
−
1
\ j-1j−1
j−1j−1 个元素)
L
o
c
(
A
[
i
]
[
j
]
)
=
L
o
c
(
A
[
1
]
[
1
]
)
+
[
(
i
−
1
)
∗
n
+
(
j
−
1
)
]
∗
d
L
o
c
(
A
[
i
]
[
j
]
)
=
L
o
c
(
A
[
1
]
[
1
]
)
+
[
(
i
−
1
)
∗
n
+
(
j
−
1
)
]
∗
d
Loc(A[i][j]) = Loc(A[1][1])+[(i-1)*n+(j-1)]*dLoc(A[i][j])=Loc(A[1][1])+[(i−1)∗n+(j−1)]∗d
Loc(A[i][j])=Loc(A[1][1])+[(i−1)∗n+(j−1)]∗dLoc(A[i][j])=Loc(A[1][1])+[(i−1)∗n+(j−1)]∗d若行列下标均从0开始,则若行列下标均从0开始,则
L
o
c
(
A
[
i
]
[
j
]
)
=
L
o
c
(
A
[
0
]
[
0
]
)
+
[
i
∗
n
+
j
]
∗
d
L
o
c
(
A
[
i
]
[
j
]
)
=
L
o
c
(
A
[
0
]
[
0
]
)
+
[
i
∗
n
+
j
]
∗
d
Loc(A[i][j]) = Loc(A[0][0])+[i*n+j]*dLoc(A[i][j])=Loc(A[0][0])+[i∗n+j]∗d
Loc(A[i][j])=Loc(A[0][0])+[i∗n+j]∗dLoc(A[i][j])=Loc(A[0][0])+[i∗n+j]∗d
• 以“列序存储为主”,求A[i][j];
L
o
c
(
A
[
i
]
[
j
]
)
=
L
o
c
(
A
[
1
]
[
1
]
)
+
[
(
j
−
1
)
∗
m
+
(
i
−
1
)
]
∗
d
L
o
c
(
A
[
i
]
[
j
]
)
=
L
o
c
(
A
[
1
]
[
1
]
)
+
[
(
j
−
1
)
∗
m
+
(
i
−
1
)
]
∗
d
Loc(A[i][j]) = Loc(A[1][1])+[(j-1)*m+(i-1)]*dLoc(A[i][j])=Loc(A[1][1])+[(j−1)∗m+(i−1)]∗d
Loc(A[i][j])=Loc(A[1][1])+[(j−1)∗m+(i−1)]∗dLoc(A[i][j])=Loc(A[1][1])+[(j−1)∗m+(i−1)]∗d若行列下标均从0开始,则若行列下标均从0开始,则
L
o
c
(
A
[
i
]
[
j
]
)
=
L
o
c
(
A
[
0
]
[
0
]
)
+
[
j
∗
m
+
i
]
∗
d
L
o
c
(
A
[
i
]
[
j
]
)
=
L
o
c
(
A
[
0
]
[
0
]
)
+
[
j
∗
m
+
i
]
∗
d
Loc(A[i][j]) = Loc(A[0][0])+[j*m+i]*dLoc(A[i][j])=Loc(A[0][0])+[j∗m+i]∗d
Loc(A[i][j])=Loc(A[0][0])+[j∗m+i]∗dLoc(A[i][j])=Loc(A[0][0])+[j∗m+i]∗d