二维动态数组的创建过程

int m,n;
cin>>m>>n;
int **p   = NULL;
p = new int *[m];
for(int i=0;i<m;i++)
p[i] = new int[n];

可以解释下后四句的具体过程吗?

int p = NULL;//p是变量名,int是类型,即定义一个二维指针p,p指向空
p = new int *[m];//给p赋值,p指向一个指针数组,这个数组有m个成员
for(int i=0;i<m;i++)//循环m次
p[i] = new int[n];//给p指向的每一个指针数组的成员赋值,让他们各指向一个有n个成员的数组

 int m,n; //表示数组长度
cin>>m>>n; //输入
int **p   = NULL;
p = new int *[m]; //用new创建数组的数组
for(int i=0;i<m;i++)
p[i] = new int[n]; //创建每一个数组

其实**p是数组的数组,这样比较好理解。数组的每个元素是一个整数数组

方法1.用new / delete创建二维动态数组
代码:

#include<iostream>
#include<vector>
using namespace std;

#define ROW 2 //行数
#define COLUMN 3 //列数
#define VALUE 1 //数组元素值

//使用new/delete创建二维数组
int ......
答案就在这里:C++中二维动态数组的创建
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。