对于一些复杂的定义,有时候很难判断到底定义的是指针还是数组甚至是函数,对于这些定义可以用下面的办法来解决
第一步:确定它的属性(通过优先级来判断)
例: int (*p)[4] //()的优先级高于[],
//因此p与()结合,
//即(*p),很明显这是一个指针
int *p[4] // *的优先级小于[],
// 因此p与[]结合
//即怕p[4],很明显这是一个数组
int (*p)() //两个()优先级相同,那么从左到右按顺序运算
//即(*p),这是一个指针
int *p() //()优先级高于*
//p(),这是一个