定义返回函数指针的函数
博学,切问,近思--詹子知 (https://jameszhan.github.io)
1. 基础知识:
1) 定义函数指针:
return_type (*func_pointer)(parameter_list)
2) 定义返回函数指针的函数:
return_type(*function(func_parameter_list))(parameter_list)
定义了一个函数function,该函数的参数列表是(function_patameter_list),返回类型是一个函数指针,这个函数指针的原型是return_type(*)(parameter_list)。
2. 经典例子[signal函数原型]
Linux 2.0之前版本
void (*signal (int signo,
void (*func)(int))) (int);
Linux 2.6 版本
typedef void (*__sighandler_t) (int);
extern __sighandler_t signal (int __sig, __sighandler_t __handler)
3. Example
可以用以下两种方式定义返回函数指针的函数。第二种方式是第一种方式的替换, 也更易理解。
1). int (*OP(char))(int,
int);
2). typedef int OP(int,
int);
OP* fun(char c);
#include<stdio.h>
int (*opp(char))(int,
int);
typedef int OP(int,
int);
OP* fun(char c);
int add(int a,
int b){
return (a + b);
}
int product(int a,
int b){
return (a * b);
}
int main(void){
int a =
2, b = 23;
printf("Hello World:%d, %d/n", opp('+')(a, b), opp('*')(a, b));
printf("Hello World:%d, %d/n", fun('+')(a, b), fun('*')(a, b));
return 0;
}
int (*opp(char c))(int a,
int b){
if(c ==
'+'){
return add;
}else{
return product;
}
}
OP* fun(char c){
if(c ==
'+'){
return add;
}else{
return product;
}
}
最后更新:2017-04-02 04:00:25
上一篇:
Oracle数据安全解决方案(3)——Oracle Audit Vault
下一篇:
How to execute shell script in Java?
《数据驱动安全:数据安全分析、可视化和仪表盘》一第3章
FlashMax安装驱动
4月21日云栖精选夜读:【校园头条】第1期:找实习、找工作时,让你脱颖而出的秘籍
谷歌美女副总裁为佩奇管理层重组最大输家
解决:<net.sf.ehcache.util.UpdateChecker> : New update(s) found: 2.6.5
Word2010中搜狗拼音输入法(各种输入法)消失了的解决办法
Kafka集群磁盘使用率瞬超85%,幕后元凶竟是它?
一篇文章搞懂人工智能、机器学习和深度学习之间的区别
SQL语句的基本操作
Facebook、中国BAT均落选,高盛全球“漂亮50”有哪些潜力股?