首先,来看一下这两种形式:
1. int *p[10];
2. int (*p)[10];
这两个表达式到底代表什么呢?
1. int *p[10];
首先,式子中有[]和*运算符,那么就要考虑到底是* 的优先级高还是 []的优先级高呢?
答案是,*和[]的优先级是一样的,那么就要按照靠右原则。即p是一个拥有10个int*元素的数组。
2. int (*p)[10];
这里,因为加了(),所以*距离p近,即q是一个指针,是一个指向int [10]的指针。
3. int (*q[10]) (int);
根据刚才的分析,首选q是一个数组,数组里面放的是指针,指针指向一个函数,即为函数指针数组。