c语言注册函数回调 java注册回调函数

c语言回调函数例子,看了就明白什么是回调函数了

回调函数 就是上层调用 设置下去

创新互联专业提供服务器托管服务,为用户提供五星数据中心、电信、双线接入解决方案,用户可自行在线购买服务器托管服务,并享受7*24小时金牌售后服务。

底层通过函数指针调用上层函数

多文件中才有用 单文件可以模拟

比如

#include stdio.h

typedef void (*pFuncCb) (int);//定义回调函数。

void callback1(int a)

{

printf("callback function1 is called and parameter = %d\n", a);//打印1

}

void callback2(int a)

{

printf("callback function2 is called and parameter = %d\n", a);//打印2

}

pFuncCb callback_function;

void lowerFunc(int n)

{

int i;

for(i = n; i  n+10; i ++)

if(callback_function) callback_function(i);

}

int main()

{

callback_function = callback1;

lowerFunc(1);// 会打印十次 打印1, 1到10

callback_function =NULL;

lowerFunc(10);//没有打印。

callback_function = callback2;

lowerFunc(100);// 会打印十次 打印2, 100到110

return 0;

}

c语言回调函数究竟有什么用处?我觉的用普通的函数调用替换也可以,谢谢

从功能上来说 普通函数也是可以的

但在比较大的程序设计中 会对很多功能模块进行封装

比如 上层一个模块

底层一个模块

同时规定,上层可以调用底层的函数,但是底层不可以调用上层函数。

这时就需要使用回调函数。

通过上层调用底层的注册回调借口,传入回调指针。

实现底层通知上层的作用。

另外 回调函数的一个好处是,可以通过回调函数,调用不同接口。

比如接收数据,不同数据需要不同的解析函数。

但是接收数据的流程是相同的

这样 使用回调函数,在接收数据的时候就可以不用判断,而是自动使用不同的解析函数。

总之 使用回调函数,可以降低耦合,实现多样性。

C语言中的回调函数实在搞不懂

typedef

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个乙方的注册形成结构体链表,在某个特定时刻遍历链表,进行回调。


名称栏目:c语言注册函数回调 java注册回调函数
文章链接:http://cdiso.cn/article/dodspop.html

其他资讯