函数的地址是存储其机器语言代码的内存的开始地址。通常,这些地址对用户而言,既不重要,也没有什么用处,但对程序而言,却很有用。例如,可以编写将另一个函数的地址作为参数的函数。这样第一个函数将能够找到第二个函数,并运行它。与直接调用另一个函数相比,这种方法很笨拙,但它允许在不同的时间传递不同函数的地址,这意味着可以在不同的时间使用不同的函数。
#include <iostream>
#include <cstring>
using namespace std;
double betsy(int);
double pam(int);
void estimate(int lines,double (*pf)(int));
int main(){
int code = 30;
estimate(code,betsy);
estimate(code,pam);
return 0;
}
double betsy(int lns){
return 0.1*lns;
}
double pam(int lns){
return 0.2*lns;
}
void estimate(int lines,double (*pf)(int)){
cout << lines << endl;
cout << (*pf)(lines) << endl;
}
总结来说想在一个方法中调用不同的函数需要以下步骤:
1、获取函数的地址;
获取函数的地址很简单,只要使用函数名(后面不跟参数)即可。也就是上面的
estimate(code,betsy);
2、声明一个函数指针;
声明指向函数的指针时,也必须指定指针指向的函数类型,需要指定返回值和参数,函数名由(*pf)代替
void estimate(int lines,double (*pf)(int));
3、使用函数指针来调用函数。
在函数体,使用指针来调用被指向的函数。只需要把(*pf)当做函数名。
(*pf)(lines)标签:函数,int,double,c++,地址,pf,函数指针,estimate From: https://blog.51cto.com/u_3764469/6058745