导读:
这个函数是这样的:void (*signal (int sinno,void(*func)(int)))(int)
这个函数有两个地方在结尾用(int),什么意思,比如void (*func)(int),在结尾加(int)代表什么意思?
最佳答案
先解释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,可以自动翻译这种声明,你可以让它翻译下看看,和我说的是不是一致。我刚才在我的虚拟机里试了下,发现没有这个程序。所以没有验证。
本文转自
http://zhidao.baidu.com/question/42910379.html
这个函数是这样的:void (*signal (int sinno,void(*func)(int)))(int)
这个函数有两个地方在结尾用(int),什么意思,比如void (*func)(int),在结尾加(int)代表什么意思?
最佳答案
先解释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,可以自动翻译这种声明,你可以让它翻译下看看,和我说的是不是一致。我刚才在我的虚拟机里试了下,发现没有这个程序。所以没有验证。
本文转自
http://zhidao.baidu.com/question/42910379.html