int (*P) (int, int); 用来定义p是一个指向函数指针的指针变量。
最前面的int表示这个函数的返回值是整形的;
最后面括号中有两个int,表示这个函数有两个int型参数;
注意:*p两侧的括号不可以省略,表示p先与*结合,是指针变量,然后再与后面的()结合,()表示是函数,
该指针变量不是指向一般的变量,而是指向函数。
如果写成 int * p(int, int); ,由于()优先级高于*,相当于int * (p(int, int)),
就变成声明一个p函数了,这个函数的返回值是一个指向整型变量的指针。
再给函数指针变量赋值的时候,只需给出函数名,而不必给出参数,如 p = max;
用函数指针变量调用函数时,只需将(*p)代替函数名即可,p为指针变量名,在(*p)之后的括号中放入传递的参数。