P57 有如下一段代码:
不像函数指针变量定义,也不像函数定义。
可以参考:http://blog.csdn.net/gibbon2000pro/archive/2008/12/11/3489219.aspx
下面对函数指针和类型做一个总结:
函数(指针)变量定义f:void (*fv) (int)
函数(指针)类型定义FType:typedef void(*FType) (int), 不能直接把void (*)(int)当做类型来使用。
返回函数的函数的定义:
1. 直接但古怪的形式如下
Void(*f(void (*f)()))(int)
函数为f
输入参数为void (*f)()
返回类型为void (*)(int), 但是不能直接把void (*)(int)当作类型,所以不能写成:
void (*)(int)f(void (*f)())这种形式,所以才会有上面这种古怪的定义。下面typedef来定义函数类型,可以得到一种比较容易理解的形式。
2. typedef的形式
typedefvoid (*FType)f(int)
FType func(FType f)