【C语言】回调函数 

举报
謓泽 发表于 2023/09/30 16:14:22 2023/09/30
【摘要】 【C语言】回调函数 

🌀 回调函数 

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

也就是 A函数 B函数(A函数的地址)解释:把A函数的地址传递给B函数,那么B函数的形参一定是A函数的指针,因为指针里面才能够存A函数的地址。然后通过A函数的指针返回来调用A函数。那么这个A函数不是直接调用的,而是通过A函数当中的指针变量存放的这个地址。再回去调用A函数的时候,这个时候称之为这种机制叫做:回调函数!

简单讲:回调函数是由别人的函数执行时调用你实现的函数,也就是回调函数必须借鉴一个函数的参数为函数指针才行。

示例,如下代码所示 👇

#include<stdio.h>

int Callback_1(int x)
{
	printf(" Hello, this is Callback_1: x = %d\n ", x);
	return x;
}

int Callback_2(int x)
{
	printf("Hello, this is Callback_2: x = %d\n ", x);
	return x;
}

int Callback_3(int x)
{
	printf("Hello, this is Callback_3: x = %d\n ", x);
	return x;
}

int Handle(int y, int(*Callback)(int))
{
	return Callback(y);//进行调用
}

int main(void)
{
	int a = 2;
	int b = 4;
	int c = 6;
	Handle(a, Callback_1);
	Handle(b, Callback_2);
	Handle(c, Callback_3);
	return 0;
}

编译运行结果👇

Hello, this is Callback_1: x = 2

Hello, this is Callback_2: x = 4

Hello, this is Callback_3: x = 6 

💥注意:回调函数是通过一个函数指针再进行调用的函数。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。