在释放指针之后一定要记得将其置为NULL,否则在之后的程序中容易引起无法预知的错误。
#include
#define N 4
typedef int p[N]; // 方法一用到
using namespace std;
int main()
{
int n = 0 ;
// 方法一:使用typedef定义一个具有N个元素的数组类型
p * ptr1; // 定义二维数组??用法与二维数组相同
ptr1 = new p[N];
for ( int i = 0 ; i < N; i ++ )
for ( int j = 0 ; j < N; j ++ )
ptr1[i][j] = ++ n;
cout << " 方法一: " << endl;
for (i = 0 ; i < N; i ++ )
{
for ( int j = 0 ;j < N; j ++ )
cout << ptr1[i][j] << " " ;
cout << endl;
}
delete[] ptr1;
cout << endl;
// 方法二:使用数组指针
int row = N; // 二维数组的行数?
int column = N; // 二维数组的列数
// 分配一个指针数组,其首地址保存在pMatrix中
int ** pMatrix = new int * [row];
// 为指针数组的每个元素分配一个数组
for ( int i = 0 ; i < row; i ++ )
pMatrix[i] = new int [column];
// 以上是分配,以下是释放
for ( int i = 0 ; i < row; i ++ )
delete [] pMatrix[i];
delete [] pMatrix;
pMatrix=NULL;
// 这些技术可用于构造一个矩阵类
return 0 ;
}
先new一个int*数组,然后对每个int*分别new一个int*
得到的是int**,即2维数组,和一般2维数组一样用
int** matrix = new int*[10];
for(int i=0; i<10; i++)
matrix[i] = new int[10];
matrix[2][5] = 3;