如何理解这段代码:void (*signal (int sinno,void(*func)(int)))(int)

void (*signal (int sinno,void(*func)(int)))(int)

先来看void(*func)(int)   这里的意思是声明一个函数指针func,它的参数类型为int,参数名可省略不写,当然(int x)也没错。

声明一个函数指针signal,他有两个参数,int sinno,和一个函数指针参数void(*func)(int)。

signal函数有自己的参数类型int,省略了参数名:void (*signal (int sinno,void(*func)(int x)))(int x) 这样也没错!!

signal 函数的返回值类型为void。

这样介绍,理解起来非常简单吧~~~~

时间: 2024-10-08 01:51:00

如何理解这段代码:void (*signal (int sinno,void(*func)(int)))(int)的相关文章

关于c语言声明 void (*signal(int sig, void(*func)(int)))(int)的理解

刚开始看到这个 很蛋疼 还是慢慢理解 首先 void(*func)(int) 是一个指针 指向一个 返回值为void 参数为int的函数 是一个函数指针 具体理解http://zhidao.baidu.com/link?url=5GpEN7wPUhDlk_m-3drRHV9bGxv53tj818vtd1GIsyaVfyY1mdsFZfP6_2M_DNAfTQrh0qxMo_wXhK1CjIEPJK 然后看外围的函数声明 是不是和里面有点类似 对的 里面函数 简写为void   (*signal(

C语言复杂声明-void (*signal(int sig, void (*handler)(int)))(int);

问题提出 请分析此声明:void (*signal(int sig, void (*handler)(int)))(int); 求解过程 在对上面的例子作分析之前,我们需要了解C语言的声明优先级,<C专家编程>P64原文如下: 规则A规定了要按照优先级来解释声明(算是一句废话).规则C请参照本人上一篇笔记:http://www.cnblogs.com/deyuanqin/p/5705967.html.规则B的具体实践过程如下图: 本着抛砖引玉的目的,我们使用以上规则分析void (*signa

typedef int (*ONMENU) (void) 的理解

typedef int (*ONMENU) (void) ——这就是一个取别名的过程. 通常情况下,我们会使用:typedef int  myint; myint a; 这里myint和int是一样的. 而对于函数的申明我们通常会这样申明:int Function() (void);此时表示申明了一个函数名为Function的函数, 函数没有任何的形参,返回值类型为int型. 而对于 typedef int(*NOMENU) (void);就是对一个 int (void)类型的函数类型进行取指针

typedef int(init_fnc_t) (void)的理解

typedef int(init_fnc_t) (void); 这个就是一个取别名的过程. 我们通常情况下会如下使用 typedef :typedef int MyInt;MyInt a; 这个时候我们的MyInt 就和int是一样的意思. 而对于函数的申明我们通常会这样申明:int InitFunction(void);此时表示申明了一个函数名为InitFunction的函数, 函数没有任何的形参,返回值类型为int型. 而对于 typedef int(init_fnc_t) (void);就

从一段代码看fork()函数及其引发的竞争

首先来看一段从<UNIX环境高级编程>中摘录的一段非常有意思的代码.借此我们再来谈谈fork()函数的一些问题. #include "apue.h" static void charatatime(char*); int main(void) { pid_t pid; if((pid=fork())<0){ err_sys("fork error"); }else if(pid==0){ charatatime("output from

java中 synchronized 的使用,确保异步执行某一段代码。

最近看了个有关访问网络url和下载的例子,里面有几个synchronized的地方,系统学习下,以下内容很重要,记下来. Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码. 一.当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行.另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块. 二.然而,当一个线程访问object的一个synchroniz

viewpager 自动无限循环 这段代码移到你的程序中就可以用了

本程序需要懂得viewpager的基础知识,也就是说你能够自己写出一个手动滑动的viewpager,下面我将附带加小圆点的知识 那么我们回顾一下图片轮转的基础知识,如果你已经对viewpager很熟悉了就不用看了,浪费时间 1.viewpager是在v4兼容报里面的,使用控件时请带上报名 2.数据来源用list存放,我这里用的是textview做的小圆点list<textview>,layout做的单张幻灯片list<view>,将xml文件inflate成为view,View.i

关于hrtimer_forward小段代码的分析【转】

转自:http://blog.csdn.net/wowuyinglingluan/article/details/45720151 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 整段代码 关于无效的forward 关于定时精度问题 精确调整和overrun问题 存疑 随着各种嵌入式设备上采用linux,特别是Android系统的广泛应用,linux的hrtimer高精度模式开始被广泛支持.当然,虽说可以支持到ns精度,具体实现依赖于硬件定时器和内核编译条件,不过,一般情

有没有一段代码,让你觉得人类的智慧也可以璀璨无比?

网友在知乎的一个提问帖:有没有一段代码,让你觉得人类的智慧也可以璀璨无比?不一定要是完整算法,就是那种看着看着就觉得嗨爆了,惊为天人的结构或语句.下面是[烧茄子]引用了知名博主 Matrix67 的一篇博文:<用三段 140 字符以内的代码生成一张 1024×1024 的图片>Kyle McCormick 在 StackExchange 上发起了一个叫做 Tweetable Mathematical Art 的比赛,参赛者需要用三条推这么长的代码来生成一张图片.具体地说,参赛者需要用 C++