#include<iostream>
using namespace std;
int add(int lhs,int rhs)
{
return lhs+rhs;
}
void main()
{
cout<<"the address of function:"<<add<<endl;
int (*fp)(int,int); //定义函数指针
fp=add;
cout<<fp(1,2)<<endl; //C++的调用方式
cout<<(*fp)(2,3)<<endl; //C的调用方式
//当要定义多个相同类型的函数指针时,可以使用typedef
typedef int (*Fp)(int,int);
Fp fp1=add;
Fp fp2=add;
cout<<fp1(4,5)<<endl;
cout<<fp2(4,5)<<endl;
}
*用函数指针实现回调
要理解回调,先要理解向函数传递函数,请看下面的代码示例
#include<iostream>
using namespace std;
int add(int lhs,int rhs)
{
return lhs+rhs;
}
int sub(int lhs,int rhs)
{
return lhs-rhs;
}
int multiply(int lhs,int rhs)
{
return lhs*rhs;
}
void compute(int (*fp)(int,int),int lhs,int rhs)
{
cout<<"The result is:"<<fp(lhs,rhs)<<endl;
}
void main()
{
int cmd=0;
cout<<"Please select the right function to compute: 1:add 2:sub 3:multiply"<<endl;
cin>>cmd;
cmd--;
cout<<"and the left and right number:";
int left=0;
int right=0;
cin>>left>>right;
typedef int (*Fp)(int,int);
Fp fpList[3]={add,sub,multiply};
if(cmd==1||cmd==2||cmd==3)
{
compute(fpList[cmd],left,right);
}
}