void(*signal(int signum, void(*handler)(int)))(int)
1.先看void(*handler)(int),这就是一个函数指针嘛,这步我们可以用typedef来定义函数指针类型
typedef void(*handler)(int),这步简化完后为
typedef void(*handler)(int)
void(*signal(int signum, handler h))(int)
2.先把signal(int signum, handler h)扣出来,剩下void(*)(int),又是个函数指针,参数和返回值和上面的一样
然后剩下的signal(int signum, handler h)不就是个函数,说明这个函数的返回值是函数指针类型
3.最终简化为
handler signal(int signum, handler h)
函数名称:signal
参数一:int型
参数二:函数指针型,参数为int,返回值为void
返回值:函数指针型,参数为int,返回值为void
调用实例
#include "stdafx.h"
void Fun(int x)
{
}
void(*signal(int signum, void(*handler)(int)))(int)
{
return Fun;
}
int _tmain(int argc, _TCHAR* argv[])
{
void(*pFun)(int) = signal(1, Fun);
};
执行完之后pFun 就是Fun的地址了