转载自[学如逆水行舟,不进则退]的博客,略加以补充。
动态二维数组的建立
void Create2DArray(T **&x,int row,int col)
{
//建立一个一维指针数组,用于保存二维数组每一行的首指针
x = new T *[row];
//为每一行的首指针分配col列数据
for(int i=0;i<row;i++)
x[i] = new T [col];
}
动态二维数组的释放
template<class T>
void DeleteArray(T **&x, int row)
{
for (int ix = 0; ix < row; ++ix)
{
delete[] x[ix];
}
delete[]x;
}
例子:
int main()
{
int **a;
int row, col;
cout << "分别输入数列的行数和列数:";
cin >> row >> col;
Creat2DArray(a, row, col);
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
{
cout << "输入数列中的数:";
cin >> a[i][j];
}
}
for (int i = 0; i < row; i++)
{
for (int j = 0; j < col; j++)
cout << a[i][j]<<" ";
cout << endl;
}
Delete2DArray(a, row);
system("pause");
}