简单介绍C语言中的回调函数
来源:互联网 发布:淘宝订单不能评价 编辑:程序博客网 时间:2024/05/01 08:36
本文档介绍C语言中的回调函数
回调函数是C语言的一种常用的高级应用,在库函数和应用程序中都有广泛的应用。
要点:
1.回调函数的调用方式
2.回调函数的完全形式的参数传递原则
3.C语言库函数的回调函数使用
回调函数的概念和作用
回调函数是程序中一种常用的函数调用方式。其特点是可以在下层软件模块(宏观上的被调用者)中,调用来自上层的软件模块(宏观上的调用者)中的函数,这和通常的调用顺序是相反的。
程序的调用方式 软件模块的关系,从总体上看,有上层软件模块和下层软件模块之分。一般有三种调用方式
1.简单的同步调用 上调下直接返回
2.带有回调的调用 双向调用
3.异步调用 一般基于消息或事件类似MFC的机制
带有回调的调用方式是一种双向调用模式,在这种方式中,下层模块的函数在被调用的时候,将会调用上层模块的某个函数,回调上层模块的函数至少有两个作用,一是监视下层模块函数的运行状态,二是干预下层模块函数的运行。
在C语言中回调函数的基础是函数类型的指针。
回调函数的作用 回调函数的表现形式是一个某种类型的函数指针,这个函数由上层的软件模块实现,将这个函数指针通过某种方式传递给下层的软件模块,由下层的软件模块在某个时刻调用这个函数。
函数指针的本质是一个函地址,在32位的系统中,本质是一个32位无符号整数。
函数指针由上层模块传递到下层模块的传递方式是可以通过函数的参数传递,也可以使用结构体的成员进行传递。
调用回调函数的时刻一般有两种:一种是在上层模块调用下层模块的函数中,直接调用回调函数:另一种是使用注册的方式,在某个事件发生的时候下层模块调用回调函数。
回调函数的语法:、
1.最简单的函数类型为:无参数、无返回值的函数。最简单的回调函数的格式是这种形式。其类型的定义如下所示:
typedef void (*T_SIMPLE_CALLBACK)(void);
注:回调函数可以是任意类型的函数指针,最简单的形式是无任何参数,也没有返回值得函数指针
2.完全形式的回调函数完全形式的回调函数可以按照如下方式实现,它包含两个无符号整数的参数,返回值也是无符号的整数。其类型的定义如下所示:
typedef unsigned int(*T_FULL_CALLBACK)(unsigned int para1,unsigned int para2);
注:1.典型的回调函数包含两个整数型参数和整数返回值,第一个参数由下层定义,第二个参数由上层定义,返回值是上层经过回调反馈给下层的
2.事实上,这种回调机制在一个系统的各个层次软件协同处理的时候很常用。例如,下层模块表示一个GUI系统,具有绘制界面的功能,上层将模块将回调函数的指针传递给下层,当界面产生“事件”的时候,调用回调函数执行上层软件模块所定制的行为。
- 简单介绍C语言中的回调函数
- 探讨C语言中的回调函数
- c语言中的回调函数
- 探讨C语言中的回调函数
- C语言中的回调函数
- 探讨C语言中的回调函数
- 探讨C语言中的回调函数
- C语言中的回调函数
- 探讨C语言中的回调函数
- 探讨C语言中的回调函数
- 探讨C语言中的回调函数
- c语言中的回调函数
- C语言中的回调函数
- 浅谈C语言中的回调函数
- C语言中的回调函数
- C语言中的回调函数实例
- C语言中的回调函数实例
- 探讨C语言中的回调函数
- 微信小程序之最简单的Demo设计使用
- js限制上传图片的格式和尺寸
- JAVAIO流
- oracle使用sqlLoad实现超大数据量导入
- 求一个n*m阶矩阵中为1的矩阵最大面积
- 简单介绍C语言中的回调函数
- 架设tomcat服务器遇到的问题
- JS组件系列——两种bootstrap multiselect组件大比拼
- eclipse安装插件提示 is not a valid repository location
- 【数据结构】树状数组模板--CODE[VS] 1080线段树练习and1081线段树练习2
- centos7 yum 方式安装nginx
- 读取xml文件
- myeclipse插件—SVN分支与合并详解【图】
- flex 布局下关于容器内成员 flex属性的理解