首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于C的申明,该怎么处理

2012-12-14 
关于C的申明对于signal函数,原型如下:void (*signal(int signum,void(* handler)(int)))(int) 我怎么感觉

关于C的申明
对于signal函数,原型如下:
void (*signal(int signum,void(* handler)(int)))(int); 
我怎么感觉不像是个函数,倒像是个函数指针啊··
这个有点迷糊了,该怎么用诶?
[最优解释]

引用:
signal是函数指针

误人子弟啊。
signal是个函数,它的返回值是个函数指针。参数有两个,1个是整型数(信号编号),另一个也是函数指针。
这个函数是用来设置信号处理函数的,它的第二个参数是新的信号处理函数地址,它的返回值是旧的信号处理函数地址。
[其他解释]
它的第二个参数以及返回值都是函数指针
通常不关心它的返回值

void foo(int sig) {}
signal(SIGINT, foo);
[其他解释]
signal是函数指针
[其他解释]
由内向外分析~~
[其他解释]
我这样推:

void (*signal(int signum,pf))(int)  //pf函数指针void(* handler)(int))

void (* Value_SignalFuctionReturn)(int)   //Value_SignalFuctionReturn = signal(int signum,pf)

//依据()的优先级和结合方向
[其他解释]
根据右左法,从最里面向外分析,所以signal是函数指针
[其他解释]
signal是个函数指针带
(int signum,void(* handler)(int))参数
返回一个函数指针
带(int)参数
[其他解释]
c 专家编程有讲
[其他解释]
就是函数指针嘛,指针指向函数。
void (*signal(int signum,void(* handler)(int)))(int);  

像这个void(* handler)(int))就是一个指向函数的指针;而void* handler(int)这个是一个函数,返回一个指针。
书上应该介绍的啊
[其他解释]
引用:
它的第二个参数以及返回值都是函数指针
通常不关心它的返回值

void foo(int sig) {}
signal(SIGINT, foo);

++
它的第二个参数以及返回值都是函数指针

[其他解释]
多写几个typedef.

热点排行