x[0][0]x[0][1]x[0][2] x[1][0]x[1][1]x[1][2] 其存储分配顺序为: x[0][0]->x[0][1]->x[0][2]->x[1][0]->x[1][1]->x[1][2] &x[0][0] &x[0][1] &x[0][2] &x[1][0] &x[1][1] &x[1][2]
x[0][0] x[0][1] x[0][2] x[1][0] x[1][1] x[1][2] 其存储分配顺序为: x[0][0]->x[0][1]->x[0][2]->x[1][0]->x[1][1]->x[1][2] &x[0][0] &x[0][1] &x[0][2] &x[1][0] &x[1][1] &x[1][2]
二维数组可以看作是一种特殊的一维数组。 [例]f1oata[3][4]; B[o] aLolLol aLolTIT a[0J[2J a[01[31 a B[1] 1一a[Lol ala[[2Ja[叮[3町 b[2]一a[2]L0]a[2][1a[2J[2Ja[2J[3J □二维数组元素a[i][j]的地址可以这样得到:□ Loc(a [i][j])=Loc(B[i])+j*C Loc(B[i])=Loc(B[O])+i*C /C=n*C Loc(a[i][j])=Loc(a[O][0])+i*n*C+j*C = Loc(a[0][0])+(i*n+j)*C [例]Loc(a[1][2])=a+(in+j)C =a+(1*4+2)*4=a+24
二维数组可以看作是一种特殊的一维数组。 [例] float a[3][4]; B[0] a[0][0] a[0][1] a[0][2] a[0][3] a- B[1] a[1][0] a[1][1] a[1][2] a[1][3] B[2] a[2][0] a[2][1] a[2][2] a[2][3] 二维数组元素a[i][j] Loc(a [i][j]) = Loc(B[i]) +j*C Loc(B[i]) = Loc(B[0]) + i*C’ // C’=n*C Loc(a[i][j]) = Loc(a[0][0]) + i*n*C+j*C = Loc(a[0][0]) + (i*n+j)*C [例] Loc(a[1][2]) = a+(i*n+j)C =a+(1*4+2)*4 = a+24
3、三维数组 多维数组元素在内存中的排序顺序为:第一维 的下标变化最慢,最右边的下标变化最快。 [例]☐f1oata[2][3][4];☐ a0]I01[0]→a0]0]1]→a[0][0]l2]→a00]3]→ a0][10]一→a0][1[1]→a0][1[2]一→a0[1][3]→ a0]l2][0-→a0][2][1]→a0[2][2]一→a0]l2]3]→ a1I0]I0]→a1][0][1→a1]I0][2]→a1]I0]3] a11][0]→a1][11→a1][12]→a11]3] a1[20一→a1川21→a1l2[2→a1]川2]3]
3、三维数组 多维数组元素在内存中的排序顺序为:第一维 的下标变化最慢,最右边的下标变化最快。 [例] float a[2][3][4]; a[0][0][0]→a[0][0][1]→a[0][0][2]→a[0][0][3]→ a[0][1][0]→a[0][1][1]→a[0][1][2]→a[0][1][3]→ a[0][2][0]→a[0][2][1]→a[0][2][2]→a[0][2][3]→ a[1][0][0]→a[1][0][1]→a[1][0][2]→a[1][0][3] a[1][1][0]→a[1][1][1]→a[1][1][2]→a[1][1][3] a[1][2][0]→a[1][2][1]→a[1][2][2]→a[1][2][3]
5.1.2 静态数组和动态数组 1动态数组类Array的定义 ◆声明: include <iostream.h> include <stdlib.h> template <class T> class Array private: int FSize; T*alist; void Allocate();
5.1.2 静态数组和动态数组 1 动态数组类 Array 的定义 声明: # include <iostream.h> # include <stdlib.h> template <class T> class Array { private: int FSize; T* alist; void Allocate( );
public: Array(int sz=50); Array(const Array <T>&x ) Array(void delete[alist; Array<T>&operator=(const Array<T>&x) T&operator[](int i); Array<T>Operator T*(void)const (return alist; int ListSize(void)const return Fsize;}
public: Array( int sz=50 ); Array( const Array <T>& x ); Array( void ) { delete[ ] alist;} Array<T>& operator=(const Array<T>& x); T& operator[ ](int i); Array<T> Operator T*(void)const {return alist;} int ListSize(void) const { return Fsize;} ~