通过typedef来简化函数指针
typedef int (*FUN)(int a,int b); //声明FUN是一个函数指针类型
Fun funp; //funp为一个返回整型和两个整数形参的函数指针
#include<iostream>
#include<malloc.h>
#include<mem.h>
#include<math.h>
using namespace std;
double sigma(double (*func)(double),double d1,double d2)
{
double dt = 0.0;
for(double d = d1;d < d2;d += 0.1)
{
dt += func(d);
}
return dt;
}
int main()
{
double dsum;
dsum = sigma(sin,0.1,1);
cout<<"the sum of sin from 0.1 to 1 is "<<dsum<<endl;
dsum = sigma(cos,0.5,3.0);
cout<<"the sum of cos from 0.5 to 3.0 is"<<dsum<<endl;
return 0;
}
函数指针可以构成指针数组
源代码示例:
#include<iostream>
#include<stdlib.h>
using namespace std;
typedef void (*MenuFun)();
void f1(){cout<<"good"<<endl;}
void f2(){cout<<"better"<<endl;}
void f3(){cout<<"best"<<endl;}
MenuFun fun[] = {f1,f2,f3};
int main()
{
cout<<"1----->display good"<<endl;
cout<<"2----->display better"<<endl;
cout<<"3----->display best"<<endl;
cout<<"enter your choice"<<endl;
int choice;
cin>>choice;
switch(choice)
{
case 1:
fun[0]();
break;
case 2:
fun[1]();
break;
case 3:
fun[2]();
break;
}
return 0;
}