int main(){
int n[2][3]={10,20,30,40,50,60};
int(*p)[3];
p=n;
cout<<p[0]<<endl;
}
我补充一下吧!
p确实是数组指针。
1.
int(*p)[3]; 为什么要写[3]呢?
因为这样定义才能标识这个p数组指针可以指向二位数组n;
你可以这样理解,我们定义二维数组时,可以不指定行,但一定要指定列,例如:int arr[][3];
所以数组指针也是一样的道理,定义数组指针时必须指定列数。
列数相同的数组指针才能指向列数相同的二维数组。
2.
p[0]相当于n[0][0]的地址
p[1]相当于n[1][0]的地址
p[0]、p[1]表示的是数组每行的首地址
所以你想找到某个数值,必须指定到位,例如p[0][0]表示第一个数,* ( * ( p + 0 ) + 0)这样貌似表示的也是第一个数(有点忘记这种用法了), * (p[0])貌似表示的也是第一个数。
3.
p=n
指针数组p指向二维数组n的首地址。
p是数组指针。指向n
p[0][0] 相当于 n[0][0]