以上为定义,为啥不能使p[0] = p[1];
int (*ptr)[3]=a这句,将a的首地址赋值给了ptr,ptr表示的是指向一个含有三个Int的数组的指针,
*((ptr+1)[2])等价于*((ptr+1)+2),等价于*(ptr+3),这表示从数组a的首地址向后移动3个单位,每个单位为一个含有3个Int的数组,所以一共向后移动了9个单位,即得出运行结果10!
要想正确表达a[1][2],应该是(*(ptr+1))[2],数组的运算符[ ]比间值运算符*的优先级高,(*(ptr+1))[2]表示a向后移动一个单位即三个Int,此时ptr指向4,再往后移动2个Int指向6。
其实遇到这类问题画内存结构图比较容易理解了