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++学习笔记(八):函数重载、函数指针和函数对象
函数重载 函数重载是指在同一作用域内,可以有一组具有相同函数名,不同参数列表的函数,这组函数被称为重载函数.重载函数通常用来命名一组功能相似的函数,这样做减少了函数名的数量,避免了名字空间的污染,对于 ...
随机推荐
- PatentTips - Multi-host SATA Controller
BACKGROUND The present subject matter relates, in general, to a computing system having multi-host p ...
- catalina.out 和 catalina.log 的区别和用途
catalina.out catalina.out其实是tomcat的标准输出(stdout)和标准出错(stderr),这是在tomcat的启动脚本里指定的,如果没有修改的话stdout和stder ...
- jquery-5 jQuery筛选选择器
jquery-5 jQuery筛选选择器 一.总结 一句话总结:选择器加动态添加方法可以不用想方法名,这个简单方便. 1.筛选选择器有哪三种? 过滤 查找 串联 1.过滤 eq();first(); ...
- IE浏览器下css hack
\9 :所有IE浏览器都支持 _和- :仅IE6支持 * :IE6.IE7支持 \0 :IE8.IE9支持 \9\0 :IE8部分支持.IE9支持 \0\9 :IE8.IE9 ...
- Android的NDK开发(5)————Android JNI层实现文件的read、write与seek操作
1. 在Android的Java层实现文件的读写操作是非常简单的,可以参看之前写的博文:http://blog.csdn.net/conowen/article/details/7296121 在JN ...
- 监控tcp,占用端口---netstat命令
netstat命令监控tcp,占用端口等等 netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表.实际的网络连接以及每一个网络接口设备的状态信息,语 法:netstat [ ...
- [NPM] Pipe data from one npm script to another
In an effort to bypass saving temporary build files you can leverage piping and output redirection t ...
- CEO 系列之一:如何当好创业公司 CEO?(不要用战术的勤奋掩盖战略的懒惰,在创业过程中,最核心问题,就是能把创业情怀变成具体问题。这个问题越具体越好)
1. 创业公司要先定一个目标,要善于把目标简化, 分解成一个, 一个更具体,更简单的问题2. 针对简单的问题进行聚焦, 做深做强3. 在做的过程中, 把断地推出自己的产品到市场上去试错, 要用事实来证 ...
- while 常见程序逻辑
1. 查找 List L; Position P = L; while (P && P->Element != Key) { P = P->Next; } return P ...
- 百度消息推送SDK探究(并附上最简推送Demo)
上一篇<百度消息推送REST API探究>中了解了如何使用REST API推送消息,这一篇我们来看一下百度消息推送为我们提供的SDK. 帮助文档:http://developer.baid ...