兩分鐘搞懂C語言函數指針

兩分鐘搞懂C語言函數指針

在C語言中,很多開發人員都會害怕指針這個東西,但是真正懂它的就覺得很簡單了,你想把它弄懂,其實不難,請往下看。函數的名字其實就是該函數的地址,換句話說,函數名本身就是一個指向其代碼區域的指針,因此取函數地址時,取址符是可選的。

拓展:

函數指針在C語言裡是特別重要的概念,因為很多關鍵技術最終都會落實到函數指針上。所謂函數指針,就是“指向函數的指針”,假如有這麼一個函數:

char * function (int a, float f);那麼指向該函數的指針,應該定義為:

char * (*p2func)(int a, float f);然後,將該指針指向這個函數:

p2func = &function;

兩分鐘搞懂C語言函數指針


這樣,指針p2func就保存了函數function的地址了,以後可以使用p2func來調用函數:

(*p2func)(100, 3.14);

從這個樣例中看到,對函數取址、賦值、對函數指針調用等,跟普通的指針和變量沒啥區別。

另外,由於函數名字本身就是地址,也就是說function本身就是代表了該函數的地址,因此上述指針賦值和解引用又可以寫為:

p2func = function; (省略了取址符&)

p2func(100, 3.14); (省略瞭解引用符*)

看到這裡,是不是覺得清晰了很多,是不是覺得它實際沒那麼難,還是挺可愛的,你對它溫柔,它也不會虧待你的,可以手動去敲一敲,練拳也要練功,這樣會記得更牢固。


分享到:


相關文章: