C语言回调函数讲解.doc
文本预览下载声明
回调函数
什么是回调函数?
回调函数就是函数指针的一种用法!
使用回调函数实际上就是在调用某个函数(通常是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);?/*?传递函数地址到调用者?*/?
}
显示全部