刚拜读了Andrew Koenig的"C Traps and Pitfalls"中的第二章——理解函数声明,在此小结一下。函数
两个原则:1.怎么使用函数就怎么写函数声明。eg. (*fp)(); 那么就能够将fp声明以下,void (*fp)();表示一个函数指针,指向返回值是void的函数的首地址。2.将函数生命中的标识符去掉就能够获得该类型。fp的类型是void(*)()。由此,很容易进行类型转换。如( void(*)() )0 ).指针
典型例子:signal函数声明it
void (*signal(int, void(*)(int)))(int);类型转换
等价与ps
typedef void (*HANDLER)(int);void
HANDLER signal(int, HANDLER);
因而可知typedef是何等的强大,发明它的人简直是个天才。