以普通函数为例:
bool Cmp(int a, int b)
声明一个函数指针,只要用指针替换函数名即可
bool (*pf)(int,int)///未初始化
///声明函数或者函数指针时,参数列表中可以只有形参类型,也可以加上形参名
函数指针的赋值
pf = Cmp;
pf = &Cmp;
两者等价,Cmp和&Cmp的值是一样的
调用函数指针
bool b1 = pf(1,2);
bool b2 = (*pf)(1,2);
bool b3 = Cmp(1,2);
这三种写法等价
函数指针作为参数
int GetVal(int a,int b,bool pf(int,int));
int GetVal(int a,int b,bool (*pf)(int,int));
这两种写法等价
GetVal(1,2,Cmp);
GetVal(1,2,&Cmp);///等价
typedef简化
typedef bool(*FuncP)(int,int);
typedef decltype(Cmp) *FuncP2;
这两种写法等价
int GetVal(int a,int b,FuncP pf);
int GetVal(int a,int b,FuncP2 pf);
指针函数
int * GetVal(int a,int b)
返回值是一个int型指针,Getval是函数名,不是变量
简单的区分方式是*有没有被()跟函数名括起来