数组中每个元素具有相同的数据类型,数组元素的类型就是数组的基类型.如果一个数组中的每个元素均为指针类型,
即由指针变量构成的数组,这些数组称为指针数组,他是指针的集合.
指针数组的形式:
类型 *数组名[常量表达式]
例如: int *pa[5];
表示有5个指针变量组成的指针数组,数组中的每个数组元素都是指针。
注意: int *pa[5] 与 int (*pb)[5]的 区别
int (*pb)[5] 表示了一个指向数组的指针pb,pb指向的数组是一位的体积为5的整型数组。
动态二维数组的分配与释放
两种方法:
1。先定义一个一维数组的类型,然后再用该类型定义一个一维数组(实际上已经成为二维的)
相当于递归定义
typedef int array[COL]; //使用typedef定义一个具有COL个元素的数组类型
array *a; //定义二维数组,与一维数组相同
array *a; //定义二维数组,与一维数组相同
a=new array[row]; //为该一维数组(实际上二维)申请空间
该方法定义的动态二维数组的释放只需以下语句即可:
delete[] a;
a=NULL;
2。 使用数组指针,分配一个指针数组,将其首地址保存在b中,然后再为指针数组的每个元素分配一个数组
int **b=new int*[row]; //分配一个指针数组,将其首地址保存在b中
for(i=0;i<row;i++) //为指针数组的每个元素分配一个数组
b[i]=new int[col];
该方法定义的动态二维数组的释放需先释放指针数组的每个元素指向的数组,然后再释放该指针数组:
for(i=0;i<row;i++)
{
delete [col]b[i];
b[i]=NULL;
}
delete [row]b;
b=NULL;
{
delete [col]b[i];
b[i]=NULL;
}
delete [row]b;
b=NULL;