#include<bits/stdc++.h>
using namespace std;
//定义一个函数指针
typedef int (*Fun)(int,int);
int add(int a,int b){return a+b;}
int sub(int a,int b){return a-b;}
int mul(int a,int b){return a*b;}
int _div(int a,int b){return b?a/b:-1;}
Fun fun(char op)
{
switch(op)
{
case '+':return add;
case '-':return sub;
case '*':return mul;
case '/':return _div;
default:return NULL;
}
return NULL;
}
//方法1
//返回值为一个拥有两个int参数、返回类型为int的函数指针
int (*for_fun(char op))(int, int)
{
return fun(op);
}
//方法2
//直接调用函数
int fun_cal(int a,int b, char op)
{
Fun fp=fun(op);//定义一个函数指针,接收两个int整数
if(fp)
return fp(a,b);
else
return -1;
}
int main()
{
cout<<"100+20="<<fun_cal(100,20,'+')<<endl;
cout<<"100-20="<<(*for_fun('-'))(100,20)<<endl;
cout<<"100*20="<<fun_cal(100,20,'*')<<endl;
cout<<"100/20="<<(*for_fun('/'))(100,20)<<endl;
return 0;
}