回调函数

13 篇文章 0 订阅

最近在看LWIP,看到了回调函数,似乎没有系统的了解过回调函数,今天就简单学习总结一下

1.含义

先了解一下什么是回调函数,看一下百科的回答

回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应

回调是任何一个被以方法为其第一个参数的其它方法的调用的方法。很多时候,回调是一个当某些事件发生时被调用的方法。

使用机制:

⑴定义一个回调函数;

⑵提供函数实现的一方在初始化的时候,将回调函数的函数指针注册给调用者;

⑶当特定的事件或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理。

以上是百科的讲解

接下来,我们从例子简单去认识一下

(1)假如,当你与一个朋友出去玩的时候,离别时,跟她说,到家了给我发个信息,那么,这就是一种回调函数形式:

回家的动作是主函数,留了一个函数参数(回到家发信息),主函数执行好了(回到家之后),回调函数(发信息),最后你收到一条信息,整个过程结束。

(2)又比如,函数 F1 调用函数 F2 的时候,函数 F1 通过参数给 函数 F2 传递了另外一个函数 F3 的指针,在函数 F2 执行的过程中,函数F2 调用了函数 F3,这个动作就叫做回调(Callback),而先被当做指针传入、后面又被回调的函数 F3 就是回调函数

 

回调函数与普通函数的最大不同(或者说优点):解耦

在主程序中我们可以把回调函数像参数一样传入库函数(或者其他函数),我们只要改变传进库函数的参数,就可以实现不同的功能。

也就是说,使用回调函数可以降低耦合度

#include<stdio.h>
#include<iostream>
using namespace std;
int Callback_1() // Callback Function 1
{
	printf("Hello, this is Callback_1 \n");
	return 0;
}

int Callback_2() // Callback Function 2
{
	printf("Hello, this is Callback_2 \n");
	return 0;
}

int Handle(int (*Callback)())
{
	printf("Entering Handle Function.\n");
	Callback();
	printf("Leaving Handle Function. \n");
}

int main()
{
	printf("Entering Main Function. \n");
	Handle(Callback_1);
	Handle(Callback_2);
	printf("Leaving Main Function. \n");
	return 0;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值