c++ 函数指针

122 阅读1分钟

函数指针:可以理解为一种复合的变量类型,该变量为指向函数的指针。

函数指针的声明

考虑两点,一个是指针,一个是指向函数。

指针的声明:*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";
}