typedef使用大全(指向函数的指针)
来源:互联网 发布:红磷分析纯价格淘宝 编辑:程序博客网 时间:2024/05/17 00:02
转自http://blog.chinaunix.net/uid-20659461-id-1905090.html
三.指向函数的指针
在typedef的使用中,最麻烦的是指向函数的指针,如果没有下面的函数,你知道下面这个表达式的定义以及如何使用它吗?
int (*s_calc_func(char op))(int,int);
如果不知道,请看下面的程序,里面有比较详细的说明
<span style="font-size:18px;"> // 定义四个函数int add(int, int);int sub(int, int);int mul(int, int);int div(int, int);// 定义指向这类函数的指针typedef int (*FP_CALC)(int, int); // 我先不介绍,大家能看懂下一行的内容吗?int (*s_calc_func(char op))(int, int); // 下一行的内容与上一行完全相同,// 定义一个函数calc_func,它根据操作字符 op 返回指向相应的计算函数的指针FP_CALC calc_func(char op); // 根据 op 返回相应的计算结果值int calc(int a, int b, char op); int add(int a, int b){ return a + b;}int sub(int a, int b){ return a - b;}int mul(int a, int b){ return a * b;}int div(int a, int b){ return b? a/b : -1;}// 这个函数的用途与下一个函数作业和调用方式的完全相同,// 参数为op,而不是最后的两个整形int (*s_calc_func(char op)) (int, int){ return calc_func(op);} FP_CALC calc_func(char op){ switch (op) { case '+': return add; case '-': return sub; case '*': return mul; case '/': return div; default: return NULL; } return NULL;} int calc(int a, int b, char op){ FP_CALC fp = calc_func(op); // 下面是类似的直接定义指向函数指针变量 // 下面这行是不用typedef,来实现指向函数的指针的例子,麻烦! int (*s_fp)(int, int) = s_calc_func(op); // ASSERT(fp == s_fp); // 可以断言这俩是相等的 if (fp) return fp(a, b); else return -1;} void test_fun(){ int a = 100, b = 20; printf("calc(%d, %d, %c) = %d\n", a, b, '+', calc(a, b, '+')); printf("calc(%d, %d, %c) = %d\n", a, b, '-', calc(a, b, '-')); printf("calc(%d, %d, %c) = %d\n", a, b, '*', calc(a, b, '*')); printf("calc(%d, %d, %c) = %d\n", a, b, '/', calc(a, b, '/'));} 运行结果 calc(100, 20, +) = 120 calc(100, 20, -) = 80 calc(100, 20, *) = 2000 calc(100, 20, /) = 5</span>
0 0
- typedef使用大全(指向函数的指针)
- typedef使用大全3(指向函数的指针)
- typedef使用大全(指向函数的指针)
- typedef使用大全3(指向函数的指针)
- typedef使用大全(指向函数的指针)
- typedef使用大全3(指向函数的指针)
- typedef使用大全(指向函数的指针)
- typedef使用大全(指向函数的指针)
- typedef使用(指向函数的指针)
- typedef使用大全3(指向函数的指针)//typedef的使用可以隐藏复杂的函数指针语法
- typedef使用大全3(指向函数的指针)//typedef的使用可以隐藏复杂的函数指针语法
- 使用typedef定义指向函数的指针
- typedef的使用之指向函数的指针
- typedef 和指向函数的指针
- typedef一个指向函数的指针
- 使用指向函数的指针
- 指向函数的指针、typedef、奇特的声明
- 由signal谈起--typedef 指向函数的指针
- 添加IIS支持某文件类型
- 闭包:学习Javascript闭包(Closure)
- 让VB6.0中文企业版 IDE(集成开发环境)支持鼠标滚轮
- Nginx 定时器事件
- UICollectionView 和UICollectionViewController(网格和网格控制器)
- typedef使用大全(指向函数的指针)
- xml里面的修饰符号
- 开始学习
- windows下cocos2dx 2.2.x编译安卓工程
- C#开发之简单的日志打印类
- java5中Lock与Condition的应用
- 【java】itoo项目实战之常见问题一
- 出色的移动线框图设计工具
- 链表---约瑟夫问题