typedef使用大全3(指向函数的指针)
来源:互联网 发布:神舟风扇控制软件 编辑:程序博客网 时间:2024/05/17 17:54
在typedef的使用中,最麻烦的是指向函数的指针,如果没有下面的函数,你知道下面这个表达式的定义以及如何使用它吗? int (*s_calc_func(char op))(int, int); 如果不知道,请看下面的程序,里面有比较详细的说明 // 定义四个函数 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
- typedef使用大全3(指向函数的指针)
- typedef使用大全3(指向函数的指针)
- typedef使用大全3(指向函数的指针)
- typedef使用大全(指向函数的指针)
- typedef使用大全(指向函数的指针)
- typedef使用大全(指向函数的指针)
- typedef使用大全(指向函数的指针)
- typedef使用大全(指向函数的指针)
- typedef使用大全3(指向函数的指针)//typedef的使用可以隐藏复杂的函数指针语法
- typedef使用大全3(指向函数的指针)//typedef的使用可以隐藏复杂的函数指针语法
- typedef使用(指向函数的指针)
- 使用typedef定义指向函数的指针
- typedef的使用之指向函数的指针
- typedef 和指向函数的指针
- typedef一个指向函数的指针
- 使用指向函数的指针
- 指向函数的指针、typedef、奇特的声明
- 由signal谈起--typedef 指向函数的指针
- FTP连接穿过防火墙
- typedef 使用大全2(结构体)
- 数据仓库建设的成功之道
- Hibernate中返回值类型的改变
- 动态分配二维数组
- typedef使用大全3(指向函数的指针)
- mysql字符集的问题
- mysql调用存储过程无法返回结果集的问题
- JDBC连接SQL Server 2005 的方法
- 保证当前只有一个程序在运行
- CFileFind的用法总结
- mfc中打开文件夹
- jsp action命名应注意
- Red5在Centos5上的安装方法详解