C语言回调函数讲解
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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); /* 传递函数地址到调用者 */ }