读书人

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

发布时间: 2012-12-14 10:33:08 作者: rapoo

关于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.

读书人网 >C语言

热点推荐