定义二维数组
int x[3][4];
那么x[0],x[1] and x[2]为指向第一行的第一个元素的指针,指向第二行的第一个元素的指针 和 指向第三行的第一个元素的指针。
所以x为指向指针的指针。
创建一个类型为T
的二维数组,这个数组有r o w s行和c o l s列。程序首先为指针x [ 0 ] , . . . , x [ r o w s - 1 ]申请空间,然后为
数组的每一行申请空间。在程序中操作符n e w被调用了r o w s + 1次。如果n e w的某一次调用引发
了一个异常,程序控制将转移到c a t c h块中,并返回f a l s e。如果没有出现异常,数组将被成功创
建,函数M a k e 2 D A r r a y返回t r u e。对于所创建的数组x中的元素,可以使用标准的用法来引用,
如x [ i ] [ j ] ,其中0≤i<r o w s , 0≤j<c o l s。
---------------------------------------------
template <class T>
bool Make2DArray ( T ** &x, int rows, int cols)
{// 创建一个二维数组
t r y {
/ /创建行指针
x = new T * [rows];
/ /为每一行分配空间
for (int i = 0 ; i < rows; i++)
x[i] = new int [cols];
return true;
}
catch (xalloc) {return false;}
}
char **P;//指向指针的指针。。
Make2DArray(P,3,4);
//删除二维数组的时候需注意
template <class T>
void Delete2DArray( T ** &x, int rows)
{// 删除二维数组x
/ /释放为每一行所分配的空间
for (int i = 0 ; i < rows ; i++)
delete [ ] x[i];
/ /删除行指针
delete [] x;
x = 0;
}
完。