【C语言天天练(七)】回调函数
来源:互联网 发布:思科网络管理软件 编辑:程序博客网 时间:2024/05/21 06:49
想要全面的了解一个概念,必须至少了解它的三点:它是什么、它有什么用、它在什么时候用。对于回调函数,同样从三个方面了解它。
1、什么是回调函数?
2、回调函数该如何使用?
3、回调函数在什么情况下使用?
答案一:
回调函数:见名知意,首先肯定的一点是它是一个函数,修饰词回调指的是程序员自己定义一个函数并实现它的程序内容,然后把这个函数的指针作为参数传递给其他函数(如系统函数)中,由其他函数(如系统函数)在运行时调用所实现的函数。函数是程序员自己实现的,但却是由其他函数(如系统函数)在运行时通过参数传递的方式调用的,这就是回调函数。简单一句话就是:由别人的函数运行期间来回调你实现的函数。
答案二:
示例1:
#include <stdio.h> #include <stdlib.h> int fun1(void) { printf("hello world.\n"); return 0; } void callback(int (*Pfun)()) { Pfun(); } int main(void) { callback(fun1); }callback回调定义的函数fun1,传递给callback的是函数fun1的地址。fun1是一个不含参数返回值为整型的函数,如果fun含有参数,还想使用回调函数则可用下面的示例2。
示例2:
#include <stdio.h>#include <stdlib.h>int fun2(char *s){printf("%s.\n", s);return 0;}void callback(int (*Pfun)(char *), char *s){Pfun(s);}intmain(void){callback(fun2, "hello world");return 0;}
答案三(引用):
如果想知道回调函数在实际中有什么作用,先假设有这样一种情况,我们要编写一个库,它提供了某些排序算法的实现,如冒泡排序、快速排序、shell排序、shake排序等等,但为使库更加通用,不想在函数中嵌入排序逻辑,而让使用者来实现相应的逻辑;或者,想让库可用于多种数据类型(int、float、string),此时,该怎么办呢?可以使用函数指针,并进行回调。
0 0
- 【C语言天天练(七)】回调函数
- 【C语言天天练(四)】回调函数
- 【C语言天天练(二)】预处理
- 【C语言天天练(三)】函数
- 【C语言天天练(六)】指针
- 【C语言天天练(八)】字符串
- 回调函数(C语言)
- 回调函数(C语言)
- C语言(回调函数)
- C语言回调函数(实例)
- 【C语言天天练(零)】变量的存储类型
- 【C语言天天练(一)】变量的类型限定词
- 【C语言天天练(三)】typedef详解
- 【C语言天天练(五)】strlen和sizeof
- 【C语言天天练(零)】a.out简介
- 【C语言天天练(二)】static关键字
- 【C语言天天练(四)】可变参数函数
- 【C语言天天练(五)】setjmp和longjmp
- Android actionBar与Fragment结合使用Demo2
- SQL语句修改字段默认值
- JSP EL表达式
- Cocos2d-3x:vs2012项目转为android项目需注意的地方
- 有了它,我还需要自己开发一套企业级系统吗?
- 【C语言天天练(七)】回调函数
- POJ-2488(回溯+剪枝)
- 动态规划,待解决
- js css 实现遮罩层
- Qt、QtE、Qtopia 和 Qtopia Core
- fragment+viewpager 第二次执行时viewpager没有数据
- 将文件存入webContent目录下
- Servlet 过滤器原理
- WebView播放HTML5视频,黑屏的问题。