int (*pfun)(int,int) = nullptr;//函数指针的定义
void* ip;//无类型指针与函数指针都不能加一
void fun(int a[10])//形参是数组的地址
int(*GetPfun(int(*fp)(int, int)))(int, int)
{
int (old)(int, int) = g_fun;
g_fun = fp;
return old;
}
其中int()GetPfun(int(fp)(int, int)))(int, int)
这样写可能不被人理解,换成这样就好了
int()(int,int)GetPfun(int(fp)(int ,int))
它的意思是 返回类型为int()(int,int),函数名为GetPfun,形参为int(*fp)(int ,int)
但是这种方式虽然好理解,但编译不通过,为了避免函数的可读性差,可以用typdef重定义
typedef int(*PFun)(int,int);
PFun GetPfun(PFun fp)