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

Python014

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

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

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

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

比如

#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

}

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

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

比如 上层一个模块

底层一个模块

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

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

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

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

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

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

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

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

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

回调函数,顾名思义,也就是等该函数执行完了,会回去调用我们传进去的函数。

用到回调函数的地方有不少,像我见过的:SQLite中的一个函数,sqlite_exec函数名有没有记错我没什么印象了。待这个函数执行完毕后,会去调用我传进去的一个函数,一般回调函数都是有自己的参数列表格式的,再利用这个格式从回调函数中获取到我们需要的一些值。