C语言回调(函数指针)
来源:互联网 发布:一键转发朋友圈 源码 编辑:程序博客网 时间:2024/06/11 11:31
回调的概念在面向对象的语言中用的很广泛,如Java中的接口、objective-c中的delegate和block。相对正常的函数调用,如A调B,在B执行完后会有返回值给A,回调通常没有返回值,而是B中被调用函数执行到某个步骤后,调用A中的某个方法,并传递相应的参数。 在C语言中,虽然没有对象的概念,但控制函数的运行逻辑,也可以使用回调。
函数指针定义的形式:返回值类型 (*指针变量名)(形参1,形参2)
typedef void (*sayInt)(int val);void realSay(int val){ printf("%d", val);}void nowSay(int value, sayInt aFun){ aFun(value);}
具体的调用
nowSay(5, realSay); //结果:5
对比这种形式,发现objective-c的block和C的函数指针回调很相似。
typedef void(^blockSay)(int val);- (void)bNowSay:(int)value completion:(blockSay)sBlock{ sBlock(value);}
实际的调用
[self bNowSay:5 completion:^(int val){ NSLog(@"%d", val); //结果5,相当于C语言中的realSay() }];
0 0
- C语言回调(函数指针)
- C语言(函数指针)
- c语言函数指针
- C语言函数指针
- c语言 函数指针
- C语言函数指针
- C语言 ---- 指针函数
- C语言函数指针
- C语言函数指针
- C语言函数指针
- c语言函数指针
- C语言函数指针
- C语言函数指针
- c语言函数指针
- C语言--函数指针
- C语言函数指针
- C语言函数指针
- C语言-函数指针
- 06.栈.链栈
- Android Base64加密解密
- 绑定服务
- each方法
- Android系统多任务双屏异显
- C语言回调(函数指针)
- extern
- 圆检测(续)- RANSAC
- 类加载及执行子系统的案例与实战
- python一个简单爬虫的实现
- 用CocoaPods做iOS程序的依赖管理
- boost-ASIO--(1)
- tar格式解压老忘
- java学习之UDP