void (*func)(int) 知道这样定义这个函数什么意思么?

这个函数是这样的:void(*signal(intsinno,void(*func)(int)))(int)这个函数有两个地方在结尾用(int),什么意思,比如void(... 这个函数是这样的:void (*signal (int sinno,void(*func)(int)))(int)
这个函数有两个地方在结尾用(int),什么意思,比如void (*func)(int),在结尾加(int)代表什么意思?
展开
 我来答
百度网友34adba635
推荐于2018-03-19 · TA获得超过367个赞
知道小有建树答主
回答量:296
采纳率:0%
帮助的人:319万
展开全部
先解释void (*func)(int):
void func()->void func(int)->void *func(int)->void (*func)(int)
上面的图示能看明白吧?func是一个函数指针,它的返回类型为空,它所指向的函数接收一个int型的参数。若是写成void *func(int)则变成了:func是一个函数,它的返回类型是空指针,它接受一个int型参数。

所以void (*signal(int sinno,void(*func)(int)))(int)意思是:
signal是一个函数指针,它的返回类型是void,它接收一个int类型的参数;不过这个指针是另一个函数的返回值,它接收2个参数,第一个是int,第二个已经解释过了。

UNIX下有个工具CDECL,可以自动翻译这种声明,你可以让它翻译下看看,和我说的是不是一致。我刚才在我的虚拟机里试了下,发现没有这个程序。所以没有验证。
kuaidh00
2008-01-01 · TA获得超过713个赞
知道小有建树答主
回答量:382
采纳率:0%
帮助的人:554万
展开全部
void (*func)(int)
-----------------------

这种形式是“函数指针”。
原则是:
(1)第一:首先要有一个函数的基本形式。返回类型 ()(函数参数列表)
(2)第二:就是(1)中的括号部分。表示一个指向函数名称的指针。所以用*声明。*一定要在指针名的前面。
就是这两个原则就行了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友14f5bce97
2008-01-01 · 超过15用户采纳过TA的回答
知道答主
回答量:26
采纳率:0%
帮助的人:0
展开全部
首先分析void(*func)(int))这是一个函数指针,你可以用typedef 定义一个新类型:
typedef void(*T)(int))

此时新类型T便代替了前面的函数指针,然后:
void (*signal (int sinno,T))(int)
这样看就明白一些了,函数指针T作为函数signal的形参,同样函数signal也是一个函数指针,最后的int是函数指针signal所指向的函数的参数,一个整形的参数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
明快且轻巧的丁香g
2008-01-01 · TA获得超过264个赞
知道小有建树答主
回答量:516
采纳率:0%
帮助的人:587万
展开全部
int 应该是指参数的类型吧,这个应该是在函数申明的时候这么写的吧。而且我觉得这样写函数的用意也就在于把读程序的人给整晕吧~~~
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
HiRockCY
2008-01-01 · TA获得超过127个赞
知道小有建树答主
回答量:187
采纳率:0%
帮助的人:276万
展开全部
(int)就是参数表啊,和(int n)之类一样,只是没为参数制定名字,所以在函数中无法使用参数而已
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式