正文

个人对回调函数的理解2007-12-14 11:21:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/sword2008/31422.html

分享到:

例如,我正在调用windows系统的函数,但出于某种原因,windows中被调用的函数依赖调用者提供一个函数处理,恩,这样说相当混乱,那么举个例子:(csdn 引用jemmylau(枕头))

用户A写一段程序,处理某一事务,例如数据排序。他对排序算法有相当研究,因此,他使用了一种高效的排序算法。为了让不懂排序算法的人也能够使用这个高效的算法,他决定为其他用户提供一个函数接口。但是,既然要排序,就必须比较2个对象的大小,而算法编写者对客户的对象没有任何知识,因此,他需要客户提供一个比较对象大小的函数,如,  
  int   comp(const   void*   obj1,   const   void*   obj2)  
  当他需要比较大小时,就调用客户提供的这个函数,根据函数返回值确定大小关系。而客户提供的这个比较函数,就可以称作回调(callback)函数,即:本来是我(客户)调用你(算法库),而你会过头来又调用我的函数(比较函数),回调函数由此得名。  
  回调函数的概念随处可见,其应用并不局限于系统调用。一般来讲,如果某个处理流程具有确定性,而流程中某个具体的处理环节需要根据实际情况具体处理,就可以将这个流程固定下来,在需要具体处理的地方“安插”适当的回调函数接口。  

 

再如,简单版,你是单独处理排序的,我是处理比较大小的,我现在需要对某些数据排序,所以我调用你的函数,但是你只处理排序,你排序过程中又依赖我的比较大小算法,所以你又得调用我的函数,这,就称为回调(我的函数).

阅读(3272) | 评论(3)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

loading...
您需要登录后才能评论,请 登录 或者 注册