C语言回调函数讲解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

回调函数

一、什么是回调函数?

回调函数就是函数指针的一种用法!

使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(回调函数)的地址作为参数传递给那个函数。而那个函数在需要的时候,利用传递的地址调用回调函数,这时你可以利用这个机会在回调函数中处理消息或完成一定的操作。

二、回调函数怎么开发?怎么使用?

回调函数是一个程序员不能显式调用的函数,要想使用就必须先定义函数指针!For example,

void fun(); /*声明一个函数原型*/

void (*fun)(); /*声明一个函数指针*/

获取一个函数指针大小的方法:

unsigned psize = sizeof(void(*)());

为函数指针声明类型定义:

typedef void (*pfun)();

三、回调函数的作用,应在什么情况下使用?

void (*p) (); //p是指向某函数的指针

有了指针变量便可以赋值,值的内容是署名匹配的函数名和返回类型。

For example

void func()

{

/* do something */

}

p = func;

p的赋值可以不同,但一定要是函数的地址,并且署名和返回类型相同。传递回调函数的地址给调用者。

现在可以将p传递给另一个函数(调用者)- caller(),它将调用p指向的函数,而此函数名是未知的:

void caller(void(*ptr)())

{

ptr(); /* 调用ptr指向的函数 */

}

void func();

int main()

{

p = func;

caller(p); /* 传递函数地址到调用者 */ }

相关文档
最新文档