函数指针:可以理解为一种复合的变量类型,该变量为指向函数的指针。
函数指针的声明
考虑两点,一个是指针,一个是指向函数。
指针的声明:*pf
函数的特点:形参和返回类型
因此一个函数指针的声明是这二者信息的复合,要表明它是一个指针,也要声明它具体指向的是何种函数。
double (*pf) (int)
即声明一个指向形参为int,返回值为double的函数。括号注明运算的优先级如果没有括号,就变成了范围类型为double *的函数了。
跟一般的声明一个变量的指针double *p
是类似的,表明其是一个指针,也要表明其指向的变量类型。
作用:作为函数的形参,每次可以调用不同的函数。即将函数本身作为一个形参,而不是函数的返回值。
- 传递函数指针:函数名字
- 使用函数指针
(*pf)(para)
或者pf(para)
c++ primary plus 例子
#include <iostream>
double betsy(int);
double pam(int);
void estimate(int lines, double (*pf)(int));
void testFunPtr()
{
using namespace std;
estimate(12,betsy);
estimate(12,pam);
}
double betsy(int lns)
{
return 0.05*lns;
}
double pam (int lns)
{
return lns*0.03+lns*lns*0.0004;
}
void estimate(int lines, double (*pf)(int))
{
using namespace std;
cout<<lines<<" lines will take ";
cout<<(*pf)(lines)<< " hours\n";
}