函數指針和指針函數的區別:
1. 名字解析。這兩個名詞都是帶有修飾的名詞,可以略微擴展一下,在中間加個助詞'的',函數的指針和指針的函數;現在看看,稍微清晰了一點,現在再擴展一下,加點修飾詞--指向函數的指針和返回值為指針的函數;現在基本明確了。
2. 格式。
Type (* pFunc)(Type para); -- 函數指針
Type* Func(Type para); -- 指針函數
3. 先說指針函數,其實它就是普通函數,只不過返回值是指針(其實就是地址)而已,很多人因為恐懼指針,覺得它神秘!
4. 函數指針。這個有點復雜,首先*和pFunc先結合,優先級最高,因此pFunc就是指針了,同時這個指針后面帶走一對小括號,里面還有參數,和函數的參數是一樣的格式,因此這個指針就是函數指針,這個指針前面還有個類型-返回值類型!有人這里感覺很奇怪,指針怎么有返回值呢?
5. 指針有返回值,是因為這個指針講來使用的時候,會指向一個格式和它自己類似的函數,因此這個指針的返回值和參數格式就決定了指向的函數的格式!
6. 函數指針要熟練,沒有為啥,必須會,因為函數指針使用的時候體現的是C語言中的聯編特點,也是后來C++語言中多態的雛形!