指针数组:是一个指向指针的数组:
int *p[]:[]的优先级高于*,因此变量p先与[]结合,即p为一整形数组,加上*成为指向指针的整形数组。
数组指针:是一个指向数组的指针:
int (*p)[]:*先与p结合,形成指针,即为一个指针。后与[]结合,为一个指向数组的指针。
函数指针:是一个指向函数的指针:
int (*p)(int n):p先与*结合,因此p是一个指针。后与(int n)结合,即为一个指向函数的指针。
函数指针数组:本质上是一个数组:
列如int (*p[])(int n):p先与[]结合,形成数组。后与*结合,形成指向指针的数组。再与(int n)结合,形成指向函数的指针数组。
指向函数指针数组的指针:
int *((*p[])(int n)):本质是一个指针。*p[]:指针数组,(*p[])(int n):函数指针数组,*((*p[])(int n))指向函数指针数组的指针。