函数指针指向的是函数的地址
一。首先声明一个指针,该指针的类型返回值参数和原函数一样,即只要将原函数的名字,换成你想要的指针的变量名即可,
eg:
原函数:
const double *f(const double *,int n);
声明指向该函数的指针:
const double *(*p)(const double *,int);
也就是用(*p)替换函数名,表明是指向该函数类型地址的指针
二。初始化
const double *(*p)(const double *,int) = f;
当然也可以通过自动类型推断功能:
auto p1 = f;
三。使用
(*p)(av,3);
或者
p(av,3)都可以
即(*p)就是代表了函数f,p他就指向函数f
至于说我们是(*p)(av,3)和p(av,3)都可以,这是折中考虑的,记住就行了
四。使用typedef简化
既然auto可以简化,那么typedef也可以用来创建类型的别名
typedef const double *(*p_fun)(const double *,int);
p_fun p = f;
也就是p_fun表明的一个类别,而函数f也是这个类别的,所以可以进行初始化赋值。