回复 楼主 a14290719
一,p=&a[2];// 相当于把把把a[2][0]的地址赋值给了(*p) 也就是等于(*p)=&(a[2][0])相当于第数组a第三行的首地址交给了*p来保存,(*p)[0]处的数值就等于a[2][0]处的数值了。
二,int p[4]=a;//p[4] 相当于定义了一个整形数组P 他有四个元素p[0] p[1] p[2] p[3],同时把数组a的首地址赋值给指针P 相当于&(p[0])=&(a[0][0])
你可以把int (*p)[4]=a; 看作成以下代码你就懂了
int b;
*p=&b;
int(*p)[4]也就=int b[4],*p只是=于一个四字节的地址,(*p)[0]等于数组A的第一个元素,同理(*p)[1]就等于数组A的第二个元素了