C/C++回调方式系列之一 函数指针和函数回调模式
- #include <cstdio>
- void function(const char *text) {
- printf("%s", text);
- }
- int main(void) {
- void (*pfun)(const char *) = &function;
- (*pfun)("Hello, world.\n");
- return 0;
- }
- #include <cstdio>
- #include <cstring>
- #define TEXT_LEN 128
- /**定义函数lucky*/
- void lucky(char *outName, size_t len) {
- strncpy(outName, "Hi, I'm lucky.\n", len);
- }
- void jacky(char *outName, size_t len) {
- strncpy(outName, "Hi, I'm jacky, Nice to meet you.\n", len);
- }
- void penny(char *outName, size_t len) {
- strncpy(outName, "Just call me penny, I like football.\n", len);
- }
- void introduce(void (*person)(char *, size_t len)) {
- char szText[TEXT_LEN] = {0};
- (*person)(szText, TEXT_LEN);
- printf("%s", szText);
- }
- typedef void (*FUNC_NAME)(char *, size_t);
- int main(void) {
- // 直接调用函数指针,注意使用了取地址符号&
- introduce(&lucky);
- // 直接定义变量方式使用函数指针
- void (*pfun)(char *, size_t) = &jacky;
- introduce(pfun);
- // 先用typedef定义函数指针类型,再用改类型定义对应的函数指针变量,最后对变量赋值并传参调用
- FUNC_NAME pfunc2 = &penny;
- introduce(pfunc2);
- return 0;
- }
编译并输出结果
http://blog.csdn.net/sweettool/article/details/72578801
C/C++回调方式系列之一 函数指针和函数回调模式的更多相关文章
- Delphi 函数指针(函数可以当参数)
首先学习: 指向非对象(一般的)函数/过程的函数指针 Pascal 中的过程类型与C语言中的函数指针相似,为了统一说法,以下称函数指针.函数指针的声明只需要参数列表:如果是函数,再加个返回值.例如声明 ...
- c++入门之函数指针和函数对象
函数指针可以方便我们调用函数,但采用函数对象,更能体现c++面向对象的程序特性.函数对象的本质:()运算符的重载.我们通过一段代码来感受函数指针和函数对象的使用: int AddFunc(int a, ...
- c++学习之初话 函数指针和函数对象 的因缘
函数指针可以方便我们调用函数,但采用函数对象,更能体现c++面向对象的程序特性. 函数对象的本质:()运算符的重载.我们通过一段代码来感受函数指针和函数对象的使用: int AddFunc(int a ...
- Day8 函数指针做函数参数
课堂笔记 课程回顾 多态 virtual关键字 纯虚函数 virtual func() = 0; 提前布局vptr指针 面向接口编程 延迟绑定 多态的析构函数的虚函数. ...
- C#委托与C语言函数指针及函数指针数组
C#委托与C语言函数指针及函数指针数组 在使用C#时总会为委托而感到疑惑,但现在总新温习了一遍C语言后,才真正理解的委托. 其实委托就类似于C/C++里的函数指针,在函数传参时传递的是函数指针,在调用 ...
- typedef void (*Fun) (void) 的理解——函数指针——typedef函数指针
首先介绍大家比较熟悉的typedef int i;//定义一个整型变量i typedef myInt int: myInt j;//定义一个整型变量j 上面介绍得是我们常用的比较简单的typedef的 ...
- [C/C++]如何解读返回函数指针的函数声明
今天在看<深入理解C++11>的时候,看到一段有意思的代码: int (*(*pf())())() { return nullptr; } 我立刻就懵了——从来没有见过这样的函数声明.那么 ...
- c语言的函数指针和函数指针数组的简单demo
今天,简单记录一下,函数指针和函数指针数组的使用,废话不多说,直接贴上代码,里面有详细的注释,方便以后查阅. #include <cstdio> #include <Windows. ...
- C++学习笔记(八):函数重载、函数指针和函数对象
函数重载 函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数.重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于 ...
随机推荐
- vue项目build后font-awesome不显示问题
解决办法: 修改build目录下的utils.js:添加 publicPath: '../../' // Extract CSS when that option is specified // (w ...
- 奇虎360Java笔试题
1题 运行下面程序后的输出结果是() public class Test { public static void main(String[] args) { StringBuffer a = new ...
- BZOJ 1588 HNOI2002 营业额统计 裸Treap
题目大意:...题目描写叙述不全看这里好了 给定一个序列 对于每一个元素我们定义该数的最小波动值为这个数与前面全部数的差中的最小值(第一个数的最小波动值为第一个数本身) 求最小波动值之和 找近期的数仅 ...
- ajax上传图片文件
这里用的是一个隐藏的iframe,这样可以让form表单提交到这个iframe里面,用户就看不到页面的刷新了 前段时间在解决ajax上传文件时折腾了好一阵.直接用$.post上传文本信息肯定是没有问题 ...
- centos-mirrors
http://mirrors.aliyun.com/centos/7.2.1511/os/x86_64/Packages/ http://mirrors.aliyun.com/centos/7.2.1 ...
- DATAGUARD在做SWITCHOVER切换时遇到问题总结
1.主库在进行物理主备库角色转换的时候遇到ORA-01093错误 SQL> select switchover_status from v$database; SWITCHOVER_STAT ...
- pytharm运行django项目
pytharm运行django项目 安装Django 下载Django包,解压缩. CMD 进入解压路径下. 执行: python setup.py install 增加环境变量: C:\Pytho ...
- dbvisualizer 使用笔记
快捷键:CTRL+SHIFT+F 格式化选中的sql语句 导入导出数据操作 导入: 1.将Exel文件另存为csv文件 2.在dbvisualizer中点击开发数据库,如test_dev,然后在te ...
- Go 快速入门
入门 Go 语言需要多久?答案是 -- 读完这篇文章的时间!不妨找一个周末的下午,踏上 Go 之旅吧! 更新记录: 2016.12.12: 完成重制 2016.11.02: 增加重点理解和参考链接 2 ...
- 解析字典包含关键字比如ID,description等,MJExtension 框架 不能直接设置变量与其同名。
@property (nonatomic,strong) NSString *descrip; //设置变量名 _DataReceived=(NSMutableArray *)[HZnewsmess ...