#include <iostream>
using namespace std;
int main()
{
//可以使用指针创建任意大小的一维数组,同理,使用指向指针的指针创建任意大小的二维数组
int **p_p_tictactoe; //有一个一位数组的指针,这些指针每一个都指向第二个一位数组
p_p_tictactoe=new int*[3]; //注意int*,因为要分配一个指针数组
for (int i = 0; i <3 ; ++i) { //现在,让每个指针都存储整数数组的地址
p_p_tictactoe[i]=new int[3];
}
for (int j = 0; j <3 ; ++j) { //这是可以像使用二维数组一样地使用分配的内存了
for (int i = 0; i < 3; ++i) {
p_p_tictactoe[i][j]=i;
}
}
for (int j = 0; j <3 ; ++j) {
for (int i = 0; i < 3; ++i) {
cout<<p_p_tictactoe[i][j]<<" ";
}
}
//要释放内存,要按照同初始化相反的顺序执行——先释放每一行的指针,然后释放掉指向这些行的指针
for (int k = 0; k < 3; ++k) {
delete []p_p_tictactoe[k];
}
delete [] p_p_tictactoe;
return 0;
}