int *p[10];定义的就是一个指针数组,因为[]的优先级比*高,所以[]先跟P结合,形成数组,这个数组的数据类型就是int *。如果是这样 int (*p)[10]; 因为括号的优先级高于[]所以p先跟*结合,形成指针,后面那个[10]事实上是声明了一个匿名数组,这个p就是一个指向数组int [10]的数组指针。如果是int型,这个指针数组里的元素就不能接受别人的取地址赋值,因为类型不符。