关于C的申明

jody_go 2011-06-18 11:12:32
对于signal函数,原型如下:
void (*signal(int signum,void(* handler)(int)))(int);
我怎么感觉不像是个函数,倒像是个函数指针啊··
这个有点迷糊了,该怎么用诶?
...全文
170 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuhex 2011-06-19
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 canican 的回复:]
signal是函数指针
[/Quote]
误人子弟啊。
signal是个函数,它的返回值是个函数指针。参数有两个,1个是整型数(信号编号),另一个也是函数指针。
这个函数是用来设置信号处理函数的,它的第二个参数是新的信号处理函数地址,它的返回值是旧的信号处理函数地址。
AnYidan 2011-06-19
  • 打赏
  • 举报
回复
c 专家编程有讲
qq120848369 2011-06-19
  • 打赏
  • 举报
回复
多写几个typedef.
玩笑 2011-06-19
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 justkk 的回复:]

它的第二个参数以及返回值都是函数指针
通常不关心它的返回值

void foo(int sig) {}
signal(SIGINT, foo);
[/Quote]
++
它的第二个参数以及返回值都是函数指针
zsjgs 2011-06-19
  • 打赏
  • 举报
回复
就是函数指针嘛,指针指向函数。
void (*signal(int signum,void(* handler)(int)))(int);

像这个void(* handler)(int))就是一个指向函数的指针;而void* handler(int)这个是一个函数,返回一个指针。
书上应该介绍的啊
就想叫yoko 2011-06-18
  • 打赏
  • 举报
回复
由内向外分析~~
canican 2011-06-18
  • 打赏
  • 举报
回复
signal是函数指针
justkk 2011-06-18
  • 打赏
  • 举报
回复
它的第二个参数以及返回值都是函数指针
通常不关心它的返回值

void foo(int sig) {}
signal(SIGINT, foo);
hedy007 2011-06-18
  • 打赏
  • 举报
回复
signal是个函数指针带
(int signum,void(* handler)(int))参数
返回一个函数指针
带(int)参数
Gary_Hendrix 2011-06-18
  • 打赏
  • 举报
回复
根据右左法,从最里面向外分析,所以signal是函数指针
东莞某某某 2011-06-18
  • 打赏
  • 举报
回复
我这样推:

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

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

//依据()的优先级和结合方向

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧