書上寫:"用typedef簡化函數原型
2~3 函數signal的正常函數原型因層次太多而變得很復雜:
void (*signal(int signo, void (*func)(int))) (int) ."
這是神馬函數?
比如void (*p) (int)我知道這叫函數指針, 可是括號裡的 *signal(int signo, void (*func)(int)) 是什麼東西? 是一個名字叫做*signal的函數? 這是語法錯誤吧?
不是語法錯誤,這個函數很復雜,當時學的時候就沒有學太明白,我試著分析一下,我分析的不知道對不對。。。。。
給你個參考
從void(* func)(int) 開始看
這是一個函數指針,然後向右看,遇到括號往回返,一直看待再出現括號,
就是signal(int signo ,void(*func)(int))這是個函數,到這裡就是說void(*func)(int)這個函數指針是函數signal的一個參數,
與int signo 一起做signal函數的參數,
然後前面加* 變幻成你給的形式 void(*signal(int signo,void(*func)(int)))(int),應該是一個函數指針。
暈了~~~你參考一下吧,我真心的不確定。