码迷,mamicode.com
首页 > 其他好文 > 详细

函数指针与回调函数

时间:2016-05-04 19:18:59      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:回调函数与函数指针

函数指针的定义:就是指向函数的指针,它像其他指针一样,也指向某个特定的类型

函数指针模型:返回值类型 ( * 指针变量名) (形参列表);

例:int (*p)(int x);

 "返回值类型"说明函数的返回类型,"(指针变量名 )"中的括号不能省,括号改变了运算符的优先级。若省略整体则成为一个函数说明,说明了一个返回的数据类型是指针的函数,后面的"形参列表"表示指针变量指向的函数所带的参数列表。函数指针的类型和函数的返回值类型也必须保持一致。

函数指针的使用主要包括函数指针的赋值和通过函数指针调用函数,函数名和数组名一样代表了函数代码的首地址,因此赋值时,可以直接将函数指针指向函数名。

例:int func(int x);//声明一个函数

 int (*p)(int x);//声明一个函数指针

 p=func;//将func()函数的首地址赋给指针p


与其他指针变量类似,就可以用p来调用该函数,实际上p和func都指向同一个入口地址,不同就是p是一个指针变量,它可以指向任何函数。如果对p进行解引用,它就相当于是所指向的func函数。在程序中把哪个函数的地址赋给它,它就指向哪个函数。而后用指针变量调用它,因此可以先后指向不同的函数。不过,指向函数的指针没有++和--运算,用时要小心。


回调:是一种双向调用模式,也就是说,被调用方在接口被调用时也会调用对方的接口。

回调和异步调用的关系非常紧密,通常我们使用回调来实现异步消息的注册,通过异步调用来实现消息的通知。回调又常常是异步调用的基础。

回调函数作用:客户和服务的交互除了同步方式以外,都需要具备一定的异步通知机制,让服务方(或接口提供方)在某些情况下能够主动通知客户,而回调是实现异步的一个最简捷的途径。

回调两种实现:

1.对于一般的结构化语言,可以通过回调函数来实现回调。回调函数也是一个函数或过程,不过它是一个由调用方自己实现,供被调用方使用的特殊函数。

2.在面向对象的语言中,回调则是通过接口或抽象类来实现的,我们把实现这种接口的类成为回调类,回调类的对象成为回调对象。对于象C++或Object Pascal这些兼容了过程特性的对象语言,不仅提供了回调对象、回调方法等特性,也能兼容过程语言的回调函数机制。

Windows平台的消息机制也可以看作是回调的一种应用,我们通过系统提供的接口注册消息处理函数(即回调函数),从而实现接收、处理消息的目的。


回调函数:在计算机程序设计中,回调函数,或简称回调,是指通过函数参数传递到其它代码的,某一块可执行代码的引用。这一设计允许了底层代码调用在高层定义的子程序。

回调函数的使用机制:

⑴定义一个回调函数;

⑵提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者;

⑶当特定的事件或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理。

回调函数的作用:因为可以把调用者与被调用者分开,所以调用者不关心谁是被调用者。它只需知道存在一个特定原型和限制条件的被调用函数。


函数指针与回调函数

标签:回调函数与函数指针

原文地址:http://10541559.blog.51cto.com/10531559/1770082

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!