函数指针回调函数
来源:互联网 发布:网络事件驱动 编辑:程序博客网 时间: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
- 回调函数 函数指针
- 函数指针回调函数
- 函数指针回调函数
- 函数指针 回调函数
- 回调函数,函数指针
- 指针函数 、函数指针 、 回调函数
- 指针函数、函数指针、回调函数
- 函数指针和回调函数浅学
- 函数指针和回调函数
- 函数指针及回调函数
- 函数指针与回调函数
- 回调函数和函数指针
- 函数指针和回调函数
- 回调函数:函数指针(一)
- 函数指针.回调函数.学习
- 函数指针和回调函数
- 回调函数和函数指针
- 函数指针与软件设计--------回调函数
- 79-命名空间
- 9轴陀螺仪KF系列算法的轴向问题
- 80-定义接口
- "Cannot declare member function ...to have static linkage"错误
- Ignatius and the Princess III hdoj 1028 (母函数初学)
- 函数指针回调函数
- 81-继承与实现接口
- hiho 52 连通性一·割边与割点
- 详解ARM的AMBA设备中的DMA设备(Linux驱动之DMA)
- Android安装
- mxnet深度学习(KVS)
- 82-资源resource类型
- ios 集成 支付宝 遇到的各种问题 总结
- 如何用java实现发邮件功能,并有几点注意事项