假設有如下代碼,你聲明瞭一個函數指針funa
:
int *funa (int k);
編譯器就知道這一行聲明瞭一個函數指針,其指向的函數接收一個int
類型的參數,返回值爲int
。
現在項目經理給編譯器作者說,“我要有一個typedef的功能,要能給某個類型起別名。”
編譯器作者說:“你不早說,我代碼都寫完了”。
抱怨歸抱怨,編譯器作者但還是得寫,那就用之前的輪子吧
typedef int *Funa (int k);
項目經理說:“這不就何之前一樣了嗎”
編譯器作者說:“誰讓你不早說,這樣我就能直接拿輪子了”
項目經理說:“也好,這樣也好記住”。
那麼:
Funa p1;
int *p2 (int k)
p1
和p2
是等價的。
因爲Funa
和int * (int k)
是一個類型,p1
和p2
是一個類型。