函数指针与typedef

#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;
}
posted @ 2018-08-08 16:23  ybf&yyj  阅读(342)  评论(0编辑  收藏  举报