首先二维数组有如下两种定义方式:
A.
int Arr[2][3]={
{1,2,3},{4,5,6}};
B.
int **Arr=new int* [2];
for(int i=0;i<2;i++)
Arr[i]=new int[3];
//initialize
for(int i=0;i<2;i++)
for(int j=0;j<3;j++)
Arr[i][j]=i*3+j+1;
但是两种方式有一个重要的区别:方式A声明的二维数组是按行连续存储的,而方式B的每行之间一般并非连续存储!
例如:虽然两种方式都可以通过 Arr[i][j] 或 *(*(Arr+i)+j) 访问元素,但是方式A可以通过如下的类