指向函數的指針(函數指針)和指針函數

      在C語言中,一碰到指針,人就比較容易犯暈,尤其是我,雖然知道指針神話了C語言,但也深知指針的麻煩。

      今天看書看到指向函數的指針,頓時又陷入自我混沌狀態,這是本着逃避心理的混沌!但是總是要慢慢明白的,所以就根據網絡上看到的和書上讀到的,在此盡我所能得總結下,以便後續學習回過頭來回憶...

      書上說,在C語言中,函數本身不是變量,但可以定義指向函數的指針。這種類型的指針可以被賦值、存放在數組中、傳遞給函數以及作爲函數的返回值等等。這個可以基本說明爲什麼要有函數指針,我的理解是函數本身不能作爲函數參數,所以定義一個指向函數的指針,這樣就可以在函數中作爲參數使用。這也許是函數指針最重要的用途吧!

      百度百科講的很明白,函數指針是指向函數的指針變量。 因而“函數指針”本身首先應是指針變量,只不過該指針變量指向函數。這正如用指針變量可指向整型變量、字符型、數組一樣,這裏是指向函數。如前所述,C在編譯時,每一個函數都有一個入口地址,該入口地址就是函數指針所指向的地址。有了指向函數的指針變量後,可用該指針變量調用函數,就如同用指針變量可引用其他類型變量一樣,在這些概念上是一致的。函數指針有兩個用途:調用函數和做函數的參數。

      注1:“函數類型”說明函數的返回類型,由於“()”的優先級高於“*”,所以指針變量名外的括號必不可少,後面的“形參列表”表示指針變量指向的函數所帶的參數列表。例如:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章