函数指针回调函数

来源:互联网 发布:网络事件驱动 编辑:程序博客网 时间:2024/04/28 15:31

1.函数指针实例一

主要想说明的是如何用函数指针去访问一个 函数

#include <iostream>using namespace std;char(*pFun)(int);char Fun1(int a){     cout << a << endl;    return a; }void main(){    pFun = Fun1;    (*pFun)(100);    system("pause");}

2.函数指针实例二

主要想说明回调函数的常规用方法,用typedef去做,如何实现

#include <iostream>using namespace std;typedef char(*PFUN)(int);PFUN pFun;char Fun1(int a){     cout << a << endl;    return a; }void main(){    pFun = Fun1;    (*pFun)(100);    system("pause");}

3.函数指针实例三

主要为了说明如何用函数指针访问不同的函数,
前提是这些函数返回值类型相同,参数个数和类型也相同
当然这些函数就是实现不同的效果的。

#include <iostream>using namespace std;typedef char(*PFUN)(int);PFUN pFun;char Fun1(int a){     cout << a << endl;    return a; }char Fun2(int a){    cout << 3 * a << endl;    return 3 * a;}void main(){    pFun = Fun1;    char chFun1 = (*pFun)(100);    cout << "cFun1 = " << (int)chFun1 << endl;    pFun = Fun2;    char chFun2 = (*pFun)(300);    cout << "cFun2 = " << (int)chFun2 << endl;    system("pause");}

4.函数指针实例四

主要是为了说明
(1)typedef 如何结合函数指针使用
(2)函数指针如何指向不同的函数(注意前提条件:返回值类型,参数个数和类型都要跟声明的函数指针的类型是一样的)
(3)switch case 实现返回不同的函数地址

#include <iostream>using namespace std;typedef int(*FP_CALC)(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 div1(int a, int b){    return b ? a / b : -1;}FP_CALC calc_func(char op){    switch (op)    {    case '+':        return add;    case '-':        return sub;    case '*':        return mul;    case '/':        return div1;    default:        return NULL;    }    return NULL;}int calc(int a, int b, char op){    FP_CALC fp = calc_func(op);    if (fp)        return fp(a, b);    else        return -1;}void main(){    int a, b;    bool bRet = false;    do    {        cout << "请输入a,b的值:(相加)";        cin >> a >> b;        cout << "calc(" << a << "," << b << ", '+') = " << calc(a, b, '+') << endl;        cout << "请输入a,b的值:(相减)";        cin >> a >> b;        cout << "calc(" << a << "," << b << ", '-') = " << calc(a, b, '-') << endl;        cout << "请输入a,b的值:(相乘)";        cin >> a >> b;        cout << "calc(" << a << "," << b << ", '*') = " << calc(a, b, '*') << endl;        cout << "请输入a,b的值:(相除)";        cin >> a >> b;        cout << "calc(" << a << "," << b << ", '/') = " << calc(a, b, '/') << endl;    } while (!bRet);    system("pause");}

本博客的写作参考了此篇文章

0 0