C语言 回调函数学习

回调函数中使用void返回类型,主要是该回调函数常用于通知时间发生或者传递处理结果,不是用于返回计算结果。

使用int类型 则需要return返回,如2中main方法中的使用。

关注点分离:

主调函数负责核心流程控制;回调函数负责具体相应逻辑,两者通过参数通信,不需要返回值通道

好处:

回调函数是被动执行的,不应该主动想调用者返回结果;接口较为简洁;事件循环系统无法处理有返回值的回调;返回值在多线程回调中会引起竞争条件

1.回调函数作为变量类型

//1.回调函数作为变量类型
#include <stdio.h>
//定义指针函数类型
typedef void (*Callbackptr)(int);

//回调函数
void myCallback(int value){
    printf("收到参数: %d\n",value);
}

//主函数
int main(){
    //创建指向mycallback的函数指针 下面这句是核心
    Callbackptr func_ptr = &myCallback;
    //通过函数指针调用回调
    func_ptr(34);
}

2.回调函数作为参数类型


//2.回调函数作为参数类型
#include<studio.h>

//定义指针类型
typedef void(*CallbackPtr)(int)

//回调函数
void MyCallback(int value){
    printf("输出值为:%d/n", value);
}
//调用回调函数 下面的方法是核心
void eventHandler(CallbackPtr callback, int data){
    printf("正在输出中");
    callback(data);   //当eventHandle被调用时,按照指针类型启动callback回调方法,并将data值赋给这个方法中的value
}
//主函数
int main(){
    eventHandler(MyCallback,100);
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值