剛拜讀了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是何等的強大,發明它的人簡直是個天才。