免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10765 | 回复: 16
打印 上一主题 下一主题

[C++] 函数返回值类型 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-28 22:12 |只看该作者 |倒序浏览
请问void (*signal(int, void (*)(int)))(int);返回什么类型,是void类型么,实在是好奇啊,求解!先谢谢了!

论坛徽章:
0
2 [报告]
发表于 2011-07-28 22:36 |只看该作者
我记得《C专家编程》里有专门对如何读定义进行过介绍,何时向左何时向右。
signal函数算是典型了。

先找标识符signal,应该是变量名或函数名;
向右看到(,标识符为函数名,找到对应的匹配);  void (*signal(函数参数))(int)
向左看到*,则返回值是指针,指针指向void ()(int)是一个函数原型;

因此signal函数的返回值是一个函数指针。

建议多利用搜索引擎。

论坛徽章:
1
摩羯座
日期:2013-11-14 15:56:09
3 [报告]
发表于 2011-07-29 09:47 |只看该作者
请问void (*signal(int, void (*)(int)))(int);返回什么类型,是void类型么,实在是好奇啊,求解!先谢谢了 ...
fhm60479 发表于 2011-07-28 22:12



    怎么感觉写错了。
两个void后都跟个括号,没有函数名?

论坛徽章:
0
4 [报告]
发表于 2011-07-29 10:03 |只看该作者
可以去看C专家编程么

这里*signal(int, void (*)(int))
连个参数 一个int 一个是 void(*)(int)

实际上这个是一个void(* a)(int)
a是指向 一个int为参数的函数指针

即这里的a是 signal(int, void (*)(int))的返回值

论坛徽章:
1
CU十二周年纪念徽章
日期:2013-10-24 15:41:34
5 [报告]
发表于 2011-07-29 11:54 |只看该作者
XXX
XXX WARNING: old character encoding and/or character set
XXX
SIGNAL(2)                  Linux Programmer's Manual                 SIGNAL(2)

NAME
       signal - ANSI C signal handling

SYNOPSIS
       #include <signal.h>

       typedef void (*sighandler_t)(int);

       sighandler_t signal(int signum, sighandler_t handler);


很明显是函数指针。

论坛徽章:
0
6 [报告]
发表于 2011-07-31 10:07 |只看该作者
我记得《C专家编程》里有专门对如何读定义进行过介绍,何时向左何时向右。
signal函数算是典型了。

先找 ...
qakito 发表于 2011-07-28 22:36



    那调用signal()函数时,怎么是signal(SIGSTOP, func);这种形式,按你说的,signal函数原型不是void ()(int),括号内为signal返回的函数指针。令人不解的是后面怎么还有个(int)参数呢,应该是void(*signal(int, void (func *)(int)))吧,后面的(int)好像没有用,没有传值么?

论坛徽章:
0
7 [报告]
发表于 2011-07-31 10:11 |只看该作者
回复 4# 守夜人jack


    令人不解的是后面怎么还有个(int)参数呢,应该是void(*signal(int, void (func *)(int)))吧,后面的(int)好像没有用,我们在应用该函数时没有传值么?

论坛徽章:
0
8 [报告]
发表于 2011-07-31 10:14 |只看该作者
回复 5# ecjtubaowp


    令人不解的是后面怎么还有个(int)参数呢,应该是void(*signal(int, void (func *)(int)))吧,最最后面的(int)好像没有用,我们在应用该函数时并没有传值么?

论坛徽章:
0
9 [报告]
发表于 2011-07-31 10:34 |只看该作者
5楼已经解释的很好了 lz好好看下

论坛徽章:
0
10 [报告]
发表于 2011-07-31 11:55 |只看该作者
回复 6# fhm60479


signal的返回类型是void (*)(int),即函数指针;
signal的参数类型是(参数1:int, 参数2:void(*)(int) ),即参数分别为整形和函数指针

那么调用singal函数时,只要参数类型满足即可,signal(SIGSTOP, func)并没有什么问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP