正在加载图片...
数组的存储 ■内存是一维的,所以数组的存储也只能 C/C++、 Pascal行优先 是一维的 先排最右的下标 以行为主序(也称为“行优先”) ■从右向左 以列为主序(也称为“列优先”) 最后最左的下标 123 ■例如对于三维数组 456 a[1.k,1m1.n]的元素axy2可以 789 如下排列 写 够写 4Paa言的行优先存储 FORTRAN列优先 先排最左的下标 a1128213…an a218282 从左向右 最后最右的下标 ak11 a*12 8*13 ■例如对于三维数组a[1.k,1.m, 8121 ak22 823 1.n]的元素a可以如下排列: 北大息 北大啦孔写 叔新有命剑 FORTRAN的列优先存储 all a211 aa11 ■C++多维数组 ELEM A[d1][d2].[dn loc(A[1,12…,JnD)=lc(40,0,…,0] [1·d2……dn+j2·d3……dn 十, loc(400…,0)+d∑∏d+ =1k=i+1 北大学到2 北京大学信息学院 张铭 编写 ©版权所有,转载或翻印必究 Page 7 数组的存储 „ 内存是一维的,所以数组的存储也只能 是一维的 „ 以行为主序(也称为“行优先”) „ 以列为主序(也称为“列优先”) X= 1 2 3 4 5 6 7 8 9 北京大学信息学院 张铭 编写 ©版权所有,转载或翻印必究 Page 8 „ C/C++、 Pascal行优先 „ 先排最右的下标 „ 从右向左 „ 最后最左的下标 „ 例如对于三维数组 a[1..k,1..m,1..n]的元素axyz可以 如下排列: 北京大学信息学院 张铭 编写 ©版权所有,转载或翻印必究 Page 9 Pascal语言的行优先存储 a111 a112 a113 … a11n a121 a122 a123 … a12n ………………………… a1m1 a1m2 a1m3 … a1mn a211 a212 a213 … a21n a221 a222 a223 … a22n ………………………… a2m1 a2m2 a2m3 … a2mn ┇ ak11 ak12 ak13 … ak1n ak21 ak22 ak23 … ak2n ………………………… akm1 akm2 akm3 … akmn 12 3 n C 1 2 m 2 2 2 2 2 2 2 2 2 2 2 2 北京大学信息学院 张铭 编写 ©版权所有,转载或翻印必究 Page 10 „ FORTRAN列优先 „ 先排最左的下标 „ 从左向右 „ 最后最右的下标 „ 例如对于三维数组a[1..k, 1..m, 1..n]的元素axyz可以如下排列: 北京大学信息学院 张铭 编写 ©版权所有,转载或翻印必究 Page 11 FORTRAN的列优先存储 a111 a211 a311 … ak11 a121 a221 a321 … ak21 ………………………… a1m1 a2m1 a3m1 … akm1 a112 a212 a312 … ak12 a122 a222 a322 … ak22 ………………………… a1m2 a2m2 a3m2 … akm2 ┇ a11n a21n a31n … ak1n a12n a22n a32n … ak2n ………………………… a1mn a2mn a3mn … akmn 12 3 k C 1 2 m 2 2 2 2 2 2 2 2 2 2 2 2 北京大学信息学院 张铭 编写 ©版权所有,转载或翻印必究 Page 12 „ C++多维数组ELEM A[d1][ d2]…[dn]; 1 2 12 23 1 1 1 1 ( [ , , , ]) ( [0,0, ,0]) [ ] ( [0,0, ,0]) [ ] n n n n nn n n i kn i k i loc A j j j loc A d jd d j d d jdj loc A d j d j − − = = + = +⋅ ⋅ ⋅ ⋅ + ⋅ ⋅ ⋅ ++ ⋅+ = +⋅ + ∑ ∏ … … … … … …
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有