定义返回函数指针的函数-阿里云开发者社区

开发者社区> james_zhan> 正文

定义返回函数指针的函数

简介:
+关注继续查看

博学,切问,近思--詹子知 (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;
}
}

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
【JavaScript框架封装】在实现一个自己定义类似于JQuery的append()函数的时候遇到的问题及解决方案
版权声明:本文为博主原创文章,未经博主允许不得转载。更多学习资料请访问我爱科技论坛:www.52tech.tech https://blog.csdn.net/m0_37981569/article/details/81087543 主要问题: 在刚开始创建了这个函数之后,使用的时候,总是会出现一个问题,就是按照正常步骤给一个ID选择器添加子节点的时候正常,但是到了给一个class选择器的元素添加的时候始终只能添加一个。
850 0
【Android】自定义ListView的Adapter报空指针异常解决方法
刚刚使用ViewHolder的方法拉取ListView的数据,但是总会报异常。仔细查看代码,都正确。 后来打开adapter类,发现getView的返回值为null。
682 0
函数分类,HIVE CLI命令,简单函数,聚合函数,集合函数,特殊函数(窗口函数,分析函数,混合函数,UDTF),常用函数Demo
1.1. 函数分类 1.2. HIVE CLI命令 显示当前会话有多少函数可用 SHOW FUNCTIONS; 显示函数的描述信息 DESC FUNCTION concat; 显示函数的扩展描述信息 DESC FUNCTION EXTENDED concat; 1.3. 简单函数 函数的计算粒度为单条记录。 关系运算 数学运算 逻辑运算 数值计算 类型转换 日期函数 条件函数 字
2698 0
深度学习之激活函数
欢迎关注我们的网站:http://www.tensorflownews.com/,学习更多的机器学习、深度学习的知识! 之前我们介绍了Sigmoid函数能够将输入的数据转换到0和1之间,其实Sigmoid函数本质上是一种常用的激活函数,是神经元最重要的组成部分。
1153 0
+关注
james_zhan
全栈工程师,程序设计语言控
34
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载