两种方式。
一,二级指针,创建2行3列的动态二维数组。
这里,p指向的是2个地址,这两个地址各指向长度为3的一维整型数组。
在内存中,每行元素内部顺序排列。两行元素的首地址不同,p[1]与p[2]存放于不同空间。
int **p=new int*[2];
for(int i=0;i<2;i++){
p[i]=new int[3];
}
每个元素取法:*(*(p+i)+j).
二,数组指针的方式创建,(比二级指针的方式少了一级地址的存储空间)。
int (*p)[3]=new int [2][3];
所有元素按行顺序存储,存放于一片连续的空间。
每个元素取法:(方法1)p[i][j] ,因为连续存储,i,j相对首地址的偏移量不超过元素总数即可,p[0][4]是正确的。
或者(方法2) *(*(p+i)+j),因为此时p指向的空间是按数组单位来划分的。.