首先,一维数组的动态定义很简单:
int *arr = new int[row];
于是,大家很可能想当然的认为二维数组的动态定义应该是:
int **arr = new int[row][col];
但是,这是一种错误的方法,二维动态数组的定义应该分成两个步骤:
1.首先,动态定义一个指向一维数组的指针数组,将其指针保存在arr中。
int **arr = new int*[row];
2.然后,为指针数组的每一个元素动态定义一个数组。
for(int i=0;i<row;i++)
{
arr[i] = new int[col];
}
这样,动态二维数组就定义好了。
在释放动态二维数组时也分成两步完成:
for(int i=0;i<row;i++)
{
delete []arr[i];
}
delete []arr;