对函数指针与typedef的理解:typedef void (*sighandler_t)(int)
文章目录
- 缘由
- 解释函数指针int (\*f)(int*);
- 解释typedef void(*sighandler_t)(int)
缘由
2021年9月22日在刷CS:APP的时候,邂逅了一种函数指针与typedef结合的写法:typedef void (*sighandler_t)(int)
来源:CSAPP第三版
解释函数指针int (*f)(int*);
对于以下声明:
int (*f)(int*);
要从f开始往外读。 首先(*f)
表明f是一个指针;(*f)(int*)
表明f是一个指向函数的指针,这个函数以int*
作为参数。
总的来看,f是一个指针,指向一个函数,该函数的参数是 int *型, 返回值是int型。即,f被声明为一个函数指针。
这里需要注意的一点是, *f
两边的括号是必需的,否则声明变成:
int *f(int *);
它会被解读为
(int *) f(int *);
也就是说,它会被解释为一个函数原型,声明了一个函数f,它以int *
作为参数,返回值类型为int *
.
解释typedef void(*sighandler_t)(int)
理解了函数指针的声明,那么对于
typedef void(*sighandler_t)(int)
的理解就可以展开了。
这里为一个函数指针指定了别名:sighandler_t
sighandler_t 是一个函数指针,它指向这样一个函数:参数是int型,返回值是void型,即无返回值。
下面是别名的使用:
sighander_t signal(int signum, sighandler_t handler);
声明signal是一个函数,它有两个参数,其一是int型的signum,其二是sighandler_t型(函数指针型)的handler; 函数signal的返回值类型也是sighandler_t型(函数指针型)。
参考:CSAPP 第三版
对函数指针与typedef的理解:typedef void (*sighandler_t)(int)相关推荐
- 关于C++中函数指针的使用(包含对typedef用法的讨论)
关于C++中函数指针的使用(包含对typedef用法的讨论) (一)简单的函数指针的应用. //形式1:返回类型(*函数名)(参数表) char (*pFun)(int); char glFun(in ...
- 对typedef void (*sighandler_t)(int)的理解(声明了一种类型:sighandler_t)
typedef void (*sighandler_t)(int); sighandler_t signal(int signum, sighandler_t handler); 此处由于加了type ...
- 指向 类成员函数 的 函数指针
原文:http://www.vckbase.com/document/viewdoc/?id=1818 一.成员函数指针的用法 在C++中,成员函数的指针是个比较特殊的东西.对普通的函数指针来说,可以 ...
- 函数指针(就做个笔记)
1,函数的地址 #include <stdio.h> int main(){int i=0;printf("main=%p\n",main);printf(" ...
- typedef 返回类型(*Function)(参数表) ——typedef函数指针
//首先看一下函数指针怎么用 #include <iostream> using namespace std; //定义一个函数指针pFUN,它指向一个返回类型为char,有一个整型的参数 ...
- c/c++中typedef与函数指针
读linux代码时,常常见到形如 typedef void (*irq_flow_handler_t)(unsigned int irq, struct irq_desc *desc); 的代码. 这 ...
- C typedef功能介绍(内附函数指针和指针函数的区别)
2018-01-10 创建人:Ruo_Xiao 开发环境:VS2010 2018-01-11 修改人:Ruo_Xiao 增加指针函数的解释以及和函数指针的区别的理解. 查阅了很多资料,我的理解是:ty ...
- 再谈typedef(重点为函数指针)
有种很方便的写法. typedef int *p: p pointer: 这时直接把pointer带入原式中,取代p然后去掉typedef,得到的结果就是int * pointer: 哈哈,这样直接替 ...
- typedef 定义函数指针
原文地址:typedef 定义函数指针作者:兰音 (一)简单的函数指针的应用. //形式1:返回类型(*函数名)(参数表) char (*pFun)(int); char glFun(int a){ ...
最新文章
- java修改 nsf中的数据_最新NSF申请指南中的一些重要改动
- Tcpdump命令的使用与示例——linux下的网络分析
- 移动互联环境下的流程管理
- 【移植Linux 3.4.2内核第二步】之修改系统分区
- C++ primer第六章6.6函数匹配
- 整洁架构设计分析--架构设计的本质是什么?
- java代理机制简单实现
- 检测Web浏览器上的内存泄漏
- 针对自动化测试的23种Node.js优秀实践
- 第一次scrum冲刺!
- resnet的演化(res2net,resnext,se-resnet,sk-resnet,resnest)
- C语言员工信息管理系统源代码
- 业内常见电子病历编辑器简单比较(1)编辑控件来源比较
- 一个非常naive的分数阶微积分介绍
- 销售额预测_机器学习
- flappy bird用java实现_java实现Flappy Bird游戏源代码
- SAP中新增移动类型科目确定配置处理实例
- End-to-End Object Detection with Fully Convolutional Network 论文笔记
- wince6.0 屏幕旋转
- ATFX:道琼斯指数的反弹,11月能否突破35000关口?