0. 预备
静态一维数组: Type p[4];
动态一维数组:Type *p = new Type [n]; (注意用完要 delete[] p;)
动态一维数组2: vector<Type> p(n);
1. 用new动态创建二维数组:
TYPE (*p)[N] = new TYPE [][N];
其中,TYPE是某种类型,N是二维数组的列数。采用这种格式,列数必须指出,而行数可以不指定。p的类型是TYPE*[N],即指向一个有N列元素数组的指针。
还有一种方法,可以不指定数组的列数:
int **p;
p = new int*[n]; //注意,int*[m]表示一个有m个元素的指针数组
for (int i = 0; i < n; i++){
p[i] = new int[m];
}
这里是将p作为一个指向指针的指针,它指向一个包含10个元素的指针数组,并且每个元素指向一个有5个元素的数组,这样就构建了一个n行m列的数组。
当数组使用完毕,释放空间的代码是:
for(int i = 0; i < n; i++){
delete[] p[i];
}
delete[] p;
2. 用vector创建二维数组:
//注意下面这一行:vector<int后两个">"之间要有空格!否则在一些老的编译器中会被认为是重载">>"。
vector<vector<int> > p(m, vector<int>(n));