C++动态创建一维数组:
int *p = new int[n];
但动态创建二维数组时,下面的写法是错误的
int ** p = new int[m][n];
正确的写法是先动态创建一个一维指针数组,再为每个指针动态创建一个一维数组,如下所示
int **p = new int *[m];
for(int i=0; i<m; i++)
{
p[i] = new int[n];
}
这样分配的二维数组每一行间不一定是连续的,这是与静态分配的数组的区别,但使用p[i][j]的形式在使用上没有区别。更高维的数组也可以使用类似的方法创建。