类型名(*指针变量名 )(函数参数表列)
如 int(* p)(int ,int )
* p两侧的括号不可省略,表示p先与*结合,是指针变量,然后再与后面的()结合,()表示是函数,即该指针变量不是指向一般的变量,而是指向函数。
如果写成int * p(int , int);由于()优先级高于*,它相当于int *(p(int , int )),就成为声明一个p函数了(这个函数的返回值是指向整型变量的指针)。
例子:
#include<iostream>
using namespace std;
int max(int a,int b){
int c;
return (a>b? a:b);
}
int main(){
int a=1,b=2,c;
int (*p)(int , int);
p = max;
c = (*p)(a,b);
cout<<c<<endl;
return 0;
}