把*p看成一个整体,把int (*p)[2]换成 int q[2]; 也就是让q=*p;p= a就等价于&q = a;也就是q指向a[0][0]的地址(二维数组首地址)第四行的 *p+2等价于q+2,q+2指针从二维数组移动2个int元素的位置,q是 int 数组,q移动1次就相当于移动到下一个int的地址,所以q+2就相当于移动到第3个int元素的地址。二维数组的存储结构是顺序存储,第三个数据就是a[1][0],所以输出是3