C基础--函数的回调
2015-09-22 09:50
267 查看
#include <stdio.h> /* 通过回调函数的性质模拟早晨被叫醒的场景 注意:闹钟和父母的行为是被抽象的 共同的行为是,到一个时间点被触发。 */ /************************************************************************/ /* 定义回调函数 */ /************************************************************************/ /*闹钟的行为*/ int clock(int time) { if (time == 6) { printf("零零零零。。。。\n"); return 1; } else { printf("我不出声,只是看着你。。。\n"); return 0; } } /*父母的行为*/ int parent(int time) { if (time >= 6) { printf("太阳晒屁股了,快起床!\n"); return 1; } else { printf("我是不叫醒呢,不叫醒呢,还是不叫醒呢。。。\n"); return 0; } } /************************************************************************/ /* 定义主调函数 */ /************************************************************************/ /*触发唤醒*/ int weakup(int(*p_func)(int), int time) { if (!p_func(time)) /*没有到时间*/ { printf("zzzzzzzzzzzzzzzzz\n"); return 0; } else { if (time == 6) { printf("再睡一会儿。。。\n"); return 0; } else { printf("好吧,你赢了,我起床。。。"); return 1; } } } /*处理主框架,决定主调函数使用哪个函数指针*/ int main(int argc, char** argv) { for (int i = 0; i <= 24; i++) { printf("当前时间:%d\n", i); if (weakup(clock, i)) { break; } if (weakup(parent, i)) { break; } } system("pause"); return 0; }
相关文章推荐
- 【Soot学习记录1】新Class文件的生成及错误处理
- LeetCode -- Binary Tree Level Order Traversal
- 我的Android进阶之旅------>adbd cannot run as root in production builds 的解决方法
- Tomcat 并发一些问题
- 用JS关闭带框架的窗口(转自百度知道)
- How to configure Eclipse for Python programming
- Formatting is Specified but argument is not IFormattable
- 多条记录的同一字段组合成一个字符串 FOR XML PATH
- 9.22问题总结
- LeetCode -- Basic Caculator
- 【TCP】TCP连接建立过程的三次握手
- URAL 1009 K-based Numbers (DP动态规划)
- 线性表
- jQuery权限控制
- Centos6.x PPTPD 搭建方法,亲测有效
- HDU 3648 Median Filter
- 【转】C# 流总结
- 解决更新Xcode以后使用Git报错的问题
- js 让小数四舍五入保留两位小数的函数是?
- 玩node-images模块---Node.js轻量级跨平台图像编解码库