函数指针和回调函数

原创 2016年08月30日 21:44:40

工作中经常用到回调函数这个东西,用了一段时间后也记录一下自己对回调函数的理解。
当我们调用第三方的库时,不论是windows下的dll还是linux下的so库,很多接口都会把一个函数当成参数传递进去,这个函数一般就叫做回调函数,传递的过程一般也就是绑定回调的过程。用个栗子来说明一下吧,这样更清晰一些,比如,有一个第三方的接口sdk_func,我知道它的作用是处理数据,并且能够把处理到的偶数告诉我,但是我不知道它什么时候会处理到偶数,那么我就给它传递一个函数(就是回调函数)吧,它的作用就是告诉sdk_func:当你处理到偶数时,调用我传递给你的这个函数,我就知道了。这样,当我注册好回调后,我就可以放心去干其他事了,因为当sdk_func处理到偶数时,它会主动告诉我。

用代码来表示一下:

#include "stdafx.h"

typedef int (*p_func)(int a); //函数指针

int cb_func(int a) { //回调函数
	printf("%d\t",a);
	return 0;
}

int sdk_func(p_func func){ //可以理解为第三方库,通常我们不需要知道它的内部逻辑,知道功能就行了。
	for (int i =0; i<= 100 ; ++i) {
		if (i % 2 == 0) {
			func(i);
		}
	}
	return 0;
}
int _tmain(int argc, _TCHAR* argv[])
{
	sdk_func(cb_func); //调用第三方库,并将回调函数传递进去
	int a;
	scanf("%d",&a);
	return 0;
}
当然,第三方库的接口中,和回调函数一起传递的一般还有用户数据:udata,在第三方接口内这个udata也会当做回调函数的参数回传过去,这样方便我们在回调函数中做一些自己的操作。

函数指针与回调函数详解

函数指针与回调函数详解1.什么是函数指针?函数指针就是指针。这个指针存放一个函数的地址,而函数的名称就该函数的入口,即地址。这类似于数组名就是数组的首地址。我们可以通过反汇编直观的查看到函数名和函数地...
  • men_wen
  • men_wen
  • 2016年09月29日 14:08
  • 2208

深入浅出剖析C语言函数指针与回调函数(二)

上一篇博文的地址:http://blog.csdn.net/morixinguan/article/details/65494239这节,我们来看看函数指针与回调函数在Linux内核中的应用。从上节我...
  • morixinguan
  • morixinguan
  • 2017年03月25日 17:21
  • 1846

【C++基础之八】函数指针和回调函数

C++很多类库都喜欢用回调函数,MFC中的定时器,消息机制,hook机制等待,包括现在在研究的cocos2d-x中也有很多的回调函数。 1.回调函数 什么是回调函数呢?回调函数其实就是一个通过函数指针...
  • jackyvincefu
  • jackyvincefu
  • 2013年09月16日 09:40
  • 28169

深入浅出剖析C语言函数指针与回调函数(一)

今天我们要搞明白的一个概念叫回调函数。什么是回调函数?百度的权威解释如下:回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数...
  • morixinguan
  • morixinguan
  • 2017年03月24日 00:19
  • 6323

声明函数指针实现回调

 程序员常常需要实现回调。本文将讨论函数指针的基本原则并说明如何使用函数指针实现回调。注意这里针对的是普通的函数,不包括完全依赖于不同语法和语义规则的类成员函数(类成员指针将在另文中讨论)。声明函数指...
  • sendy888
  • sendy888
  • 2007年07月31日 16:24
  • 1831

函数指针与回调函数的用法

前段时间介绍了函数指针与状态机的用法,这篇文章介绍下函数指针与回调函数之前的用法。 回调函数回调函数即callback function,一般是先注册,后调用的方式调用。之前在工作中,有一款ALPS的...
  • liebecl
  • liebecl
  • 2017年08月16日 17:56
  • 88

C/C++回调方式系列之一 函数指针和函数回调模式

一、函数指针 1. 函数的定义 return_type function_name(parameter list) { function_body }...
  • SweetTool
  • SweetTool
  • 2017年05月20日 15:45
  • 1482

C/C++之回调函数---函数指针的作用

今天讨论下C/C++中的回调函数。      在理解“回调函数”之前,首先讨论下函数指针的概念。 函数指针 (1)概念:指针是一个变量,是用来指向内存地址的。一个程序运行时,所有和运行相关的物件都是需...
  • kkk0526
  • kkk0526
  • 2013年12月04日 17:24
  • 5465

java 回调函数实现方式

回调函数定义:传递一个函数A到另一个函数B中,并且这个函数B执行函数A。我们就说函数A叫做回调函数。如果没有名称,就叫做匿名回调函数.或者将一个方法对象a 传递给另一个方法对象 b,让后者在适当的时候...
  • hahalzb
  • hahalzb
  • 2011年04月02日 11:25
  • 5872

钩子函数与回调函数的区别

回调函数 钩子函数 有什么区别  分享| 2014-11-17 13:59小妖有爱270 | 浏览 907 次  编程语言 举报| 2014-11-18 10:37 ...
  • g200407331
  • g200407331
  • 2016年04月20日 17:38
  • 696
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:函数指针和回调函数
举报原因:
原因补充:

(最多只允许输入30个字)