news 2026/6/10 16:19:56

指针注册方式实现回调函数-c语言使用回调函数实现封装和多态

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
指针注册方式实现回调函数-c语言使用回调函数实现封装和多态

指针注册方式实现回调函数-c语言使用回调函数实现封装和多态

一、常见回调函数案例
//定义回调函数类型
typedef void(*CallbackFunction)(int);

//回调函数实现
void myCallback(int value) {

std::cout << "my value:" << value << std::endl;
}

//执行回调函数:接受一个回调函数参数
void funcAction(CallbackFunction callback,int value) {
if (callback != NULL) {
callback(value);
}
}


int main() {
funcAction(myCallback, 10);


return 0;

}


二、使用指针注册方式实现回调函数
1.回调函数实现C语言的多态
这种方式实现了c语言的多态。面向对象的多态的实现原理是一样的。

//定义回调函数类型
typedef int(*CallbackFunction)(int a,int b);

typedef struct data_t {
int a;
int b;
CallbackFunction callback;//函数管理器
}op_data;

//注册函数
void Register(op_data *data) {
int reslt = data->callback(data->a, data->b);
std::cout << "result:" << reslt << std::endl;
}

//加法回调函数
int add(int a,int b) {
return a + b;
}

//减法回调函数
int sub(int a, int b) {
return a - b;
}


int main() {
op_data *mydata = (op_data*)malloc(sizeof(op_data));
mydata->a = 10;
mydata->b = 5;

mydata->callback = add;
Register(mydata);


mydata->callback = sub;
Register(mydata);

free(mydata);

return 0;

}

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 12:57:36

基于python的酒店数据分析设计与实现

前言   近年来&#xff0c;酒店行业不断升温、扩大&#xff0c;造成旅游市场越演越烈的争夺战和消费者在选择酒店方面的信息极度不对称问题&#xff0c;消费者无法获得最准确、最全面的酒店信息做出最好的选择。传统收集酒店的信息多采取人力采集的方式&#xff0c;这种信息收…

作者头像 李华
网站建设 2026/6/10 16:03:23

InVivoMAb Anti-Mouse CD8α:体内免疫调控研究的理想工具

在免疫学研究领域&#xff0c;抗体的特异性和功能表现直接影响实验结果的准确性与可重复性。而其中&#xff0c;针对CD8α分子的单克隆抗体更是被广泛应用于T细胞功能研究、肿瘤免疫治疗及免疫调节机制探索等关键领域。作为一款性能卓越的InVivoMAb anti-mouse CD8α&#xff0…

作者头像 李华
网站建设 2026/6/10 15:10:38

收藏备用|AI浪潮下,传统程序员转型AI工程师全指南(小白也能看懂)

最近在油管刷到一位资深科技博主&#xff0c;分享了当下科技行业就业形势拆解&#xff0c;以及传统程序员如何低成本转型AI工程师的干货内容&#xff0c;看完深受启发&#xff0c;特意整理成详细笔记分享给大家。不管你是刚入门的编程小白&#xff0c;还是工作多年的资深程序员…

作者头像 李华
网站建设 2026/6/10 10:58:44

基于python的加油站销售积分管理系统的设计与实-pycharm DJANGO FLASK

文章目录 基于Python的加油站销售积分管理系统设计与实现&#xff08;PyCharm Django/Flask&#xff09;系统概述技术栈选择核心功能设计关键代码示例&#xff08;Django&#xff09;部署与优化应用场景 大数据系统开发流程主要运用技术介绍源码文档获取定制开发/同行可拿货,招…

作者头像 李华
网站建设 2026/6/10 10:55:36

Linux 服务可用性监控实战:端口、进程、接口怎么监控?

在上一篇《Linux 主机监控实战&#xff1a;CPU、内存、磁盘到底怎么看&#xff1f;》中&#xff0c;我们解决了一个问题&#xff1a;服务器这台“机器”是不是健康的。 在真实运维场景中&#xff0c;你很快就会发现&#xff1a; 机器活着 资源正常 用户却访问不了服务 &am…

作者头像 李华
网站建设 2026/6/10 11:01:22

在线考试平台哪家好?2026选购攻略+高性价比平台推荐

线上办公、线上教学常态化&#xff0c;不管是企业员工培训考核、学校随堂测试&#xff0c;还是个人备考刷题&#xff0c;都离不开一款靠谱的在线考试平台。但市面上在线考试平台五花八门&#xff0c;宣传话术天花乱坠&#xff0c;不少人都会陷入困惑&#xff1a;在线考试平台哪…

作者头像 李华