[首页]
[文章]
[教程]
首页
Web开发
Windows开发
编程语言
数据库技术
移动平台
系统服务
微信
设计
布布扣
其他
数据分析
首页
>
其他
> 详细
函数回调以及函数指针
时间:
2015-08-05 12:49:34
阅读:
212
评论:
0
收藏:
0
[点我收藏+]
code 其实只是行为的一种描述,code可以编码成为data,将data解释运行的时候,也会变成code。code和data可以不用区分,统一称为信息。
##统一code、data的共性(数据和代码的统一)
有些语言不单可以传递函数,函数里面又用到一些外部信息(包括code, data)。那些语言可以将函数跟函数所用到的信息一起传递存储。
这种将函数和它所用的信息作为一个整体,就为闭包。
### 闭包在swift语言中经常会用到。
### 将代码和数据打通,统一起来,是一个槛。比如一些修改自身的程序啊,数据驱动啊,先设计数据再写程序等等。
回调函数也就是是A让B做事,B做着做着,信息不够,不知道怎么做了,就再让外面处理。
C语言中不可以传进第一值的函数,就设计成传递第二值的函数指针,这个函数指针就是A传向B的信息,用来表示一个行为。这里本来A调用B的,结果B又调用了A告诉它的信息,也就叫callback。
### 回调函数和闭包之间存在着大与小范围的关系。
在分层设计中,高层次的模块会叫低层次的模块做一些事情,通常是通过函数调用。
从设计上来说,低层次的模块不应该直接调用高层次模块的函数。
### 明晰回调与调用之间的关系,回调是在调用的基础上扩展的。
操作系统本是为应用程序服务,由应用程序来调用。而应用程序一旦启动,却要反过来等待操作系统的调用。这分明也是一种回调,或者说是一种广义回调
### 广义回调例子:程序应用启动与操作系统之间的关系(存在回调)
回调函数主要用于一些比较费时的操作,或响应不知道何时将会发生的事件,回调函数提供了一种异步的机制, 相对于同步执行,提高了效率.
回调函数:
回调函数是这样一种机制:调用者在初始化一个对象(这里的对象是泛指,包括OOP中的对象、全局函数等)时, 将一些参数传递给对象,同时将一个调用者可以访问的函数地址传递给该对象。
"这个函数就是调用者和被调用者之间的一种通知约定"
,当约定的事件发生时,被调用者(一般会包含一个工作线程)就会按照回调函数地址调用该函数。 这种方式,调用者在一个线程,被调用者在另一个线程。
总结:(回调函数)被调用者之所以是以参数的形式放在调用者的函数中,因为这样就可以回调调用者的资源,是西安回调,不过他们在不同的线程中。
window上的回调函数:
回调函数是应用程序提供给Windows系统DLL或其它DLL调用的函数,一般用于截获消息、获取系统信息或处理异步事件。
在__stdcall方式下,函数的参数按从右到左的顺序压入堆栈,除了明确指明是指针或引用外,参数都按值传递,函数返回之前自己负责把参数从堆栈中弹出。
### 需要注意的是回调函数必须是全局函数或者静态成员函数
声明和定义时应注意,回调函数由系统调用,所以可以认为它属于windows系统,不要把它当作你的某个类的成员函数。
回调函数是一个程序员不能显示调用的函数,通过将回调函数的地址传给调用者从而实现调用。回调函数是十分必要的,在我们想通过一个统一接口实现不同的内容,这时回调函数非常合适
总结:
1、先理解函数指针的概念,函数指针和变量指针的关系,函数指针是一个存放函数栈中的地址。
2、函数调研,函数调用就是一个函数准备者,被被人调用
3、函数回调,区分调用者和被调用者,调用者调用被调用这的同时,被调用者也会利用调用者的资源(或调用调用者),一般是以函数指针参数的形式传递。
4、回调函数(被调用者的函数),注意要是全局函数或者静态函数。
5、函数回调,是一种设计模式,与语言无关
6、函数回调的例子:有计算机的中断、计算机应用的启动等等。
参考链接:
回调函数:
http://blog.csdn.net/jackystudio/article/details/11720325
http://www.cppblog.com/SpringSnow/archive/2008/12/07/68770.aspx
c语言与函数指针
http://blog.jobbole.com/44639/
版权声明:本文为博主原创文章,未经博主允许不得转载。
函数回调以及函数指针
原文:http://blog.csdn.net/u012496940/article/details/47295019
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年09月23日 (328)
2021年09月24日 (313)
2021年09月17日 (191)
2021年09月15日 (369)
2021年09月16日 (411)
2021年09月13日 (439)
2021年09月11日 (398)
2021年09月12日 (393)
2021年09月10日 (160)
2021年09月08日 (222)
最新文章
更多>
2021/09/28 scripts
2022-05-27
vue自定义全局指令v-emoji限制input输入表情和特殊字符
2022-05-27
9.26学习总结
2022-05-27
vim操作
2022-05-27
深入理解计算机基础 第三章
2022-05-27
C++ string 作为形参与引用传递(转)
2022-05-27
python 加解密
2022-05-27
JavaScript-对象数组里根据id获取name,对象可能有children属性
2022-05-27
SQL语句——保持现有内容在后面增加内容
2022-05-27
virsh命令文档
2022-05-27
教程昨日排行
更多>
1.
list.reverse()
2.
Django Admin 管理工具
3.
AppML 案例模型
4.
HTML 标签列表(功能排序)
5.
HTML 颜色名
6.
HTML 语言代码
7.
jQuery 事件
8.
jEasyUI 创建分割按钮
9.
jEasyUI 创建复杂布局
10.
jEasyUI 创建简单窗口
友情链接
汇智网
PHP教程
插件网
关于我们
-
联系我们
-
留言反馈
- 联系我们:wmxa8@hotmail.com
© 2014
bubuko.com
版权所有
打开技术之扣,分享程序人生!