十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
typedef
我们提供的服务有:网站设计、网站制作、微信公众号开发、网站优化、网站认证、和政ssl等。为上千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的和政网站制作公司
struct
{
int
a;
void
(*pshow)(int);
}TMP;
void
func(TMP
*tmp)
{
if(tmp-a
10)//如果a10,则执行回调函数。
{
(tmp-pshow)(tmp-a);
}
}
void
show(int
a)
{
printf("a的值是%d\n",a);
}
void
main()
{
TMP
test;
test.a
=
1;
test.pshow
=
show;
func(test);
}
这只是举例,一般回调函数的用法为:
甲方进行结构体的定义(成员中包括回调函数的指针)
乙方定义结构体变量,并向甲方注册,
甲方收集N个乙方的注册形成结构体链表,在某个特定时刻遍历链表,进行回调。
看一下这个例子吧,我是这样理解的:
#include
"iostream.h"
#include
"windows.h"
typedef
void
(CALLBACK
*MyFun)(void);//回调函数定义
void
CALLBACK
callback()
//
回调函数
{
cout"****callback****\n";
}
void
Call_CallBack(MyFun
mycb)
{
cout"****Call_CallBack****\n";
mycb();
cout"__________________\n";
}
void
main()
{
Call_CallBack(callback);
}
//
其他人需要修改的话只要修改callback函数里的内容就行了,一般sdk封装后都会有回调,这样他人在调用sdk的时候就可以实现回调函数里的内容。
如果你需要理论的,网上搜回调函数,内容哈多随便看
回调函数,顾名思义,也就是等该函数执行完了,会回去调用我们传进去的函数。
用到回调函数的地方有不少,像我见过的:SQLite中的一个函数,sqlite_exec函数名有没有记错我没什么印象了。待这个函数执行完毕后,会去调用我传进去的一个函数,一般回调函数都是有自己的参数列表格式的,再利用这个格式从回调函数中获取到我们需要的一些值。
库函数qsort就是一个回调函数,你可以去搜搜qsort与回调函数,回调函数就是函数指针做另一个函数的参数