1. 程式人生 > >函式指標的轉換與呼叫

函式指標的轉換與呼叫

C語言中的強制型別轉換是一個很常用的技巧,在程式設計中經常會用到。形式簡單的型別轉換一目瞭然,然而複雜一些的卻常常令人困惑。這兩天讀程式碼發現一個函式指標的型別轉換: ((void (*)(void)) (entry ))(); 雖然知道是通過函式指標進行函式呼叫,但是和見過的函式指標的形式都不一樣,想了半天也不明白,最後到網上搜了一下,才知道是一個型別轉換。 函式指標的宣告形式: void (*pFunction)(),當然,沒有引數的情況下也可寫成void (*pFunction)(void)的形式。那麼pFunction函式指標的原型就是 void (*)(void),即把變數名去掉,因此,對於一個給定的entry地址,要把它轉換成為函式指標,就是 (void (*) (void))entry
對於函式指標的呼叫,ANSI C認為 pFunction()和*pFunction()都是正確的,所以 ((void (*) (void))(entry)(); 就形成一個函式呼叫。