c語言指針用法舉例 C語言中的函數(shù)指針和指針函數(shù),有什么區(qū)別嗎?該如何理解?
C語言中的函數(shù)指針和指針函數(shù),有什么區(qū)別嗎?該如何理解?函數(shù)指針和指針函數(shù)的區(qū)別:1. 名字解析。這兩個(gè)名詞都是帶有修飾的名詞,可以略微擴(kuò)展一下,在中間加個(gè)助詞"的",函數(shù)的指針和指針的函數(shù)現(xiàn)在看看,
C語言中的函數(shù)指針和指針函數(shù),有什么區(qū)別嗎?該如何理解?
函數(shù)指針和指針函數(shù)的區(qū)別:
1. 名字解析。這兩個(gè)名詞都是帶有修飾的名詞,可以略微擴(kuò)展一下,在中間加個(gè)助詞"的",函數(shù)的指針和指針的函數(shù)現(xiàn)在看看,稍微清晰了一點(diǎn),現(xiàn)在再擴(kuò)展一下,加點(diǎn)修飾詞--指向函數(shù)的指針和返回值為指針的函數(shù)現(xiàn)在基本明確了。
2. 格式。
Type (* pFunc)(Type para) -- 函數(shù)指針
Type* Func(Type para) -- 指針函數(shù)
3. 先說指針函數(shù),其實(shí)它就是普通函數(shù),只不過返回值是指針(其實(shí)就是地址)而已,很多人因?yàn)榭謶种羔?,覺得它神秘!
4. 函數(shù)指針。這個(gè)有點(diǎn)復(fù)雜,首先*和pFunc先結(jié)合,優(yōu)先級(jí)最高,因此pFunc就是指針了,同時(shí)這個(gè)指針后面帶走一對(duì)小括號(hào),里面還有參數(shù),和函數(shù)的參數(shù)是一樣的格式,因此這個(gè)指針就是函數(shù)指針,這個(gè)指針前面還有個(gè)類型-返回值類型!有人這里感覺很奇怪,指針怎么有返回值呢?
5. 指針有返回值,是因?yàn)檫@個(gè)指針講來使用的時(shí)候,會(huì)指向一個(gè)格式和它自己類似的函數(shù),因此這個(gè)指針的返回值和參數(shù)格式就決定了指向的函數(shù)的格式!
6. 函數(shù)指針要熟練,沒有為啥,必須會(huì),因?yàn)楹瘮?shù)指針使用的時(shí)候體現(xiàn)的是C語言中的聯(lián)編特點(diǎn),也是后來C 語言中多態(tài)的雛形!
在C 中函數(shù)指針有什么作用呢,為什么不直接調(diào)用函數(shù)而要使用函數(shù)指針?
可以作為回調(diào)函數(shù)。只需要將函數(shù)指針作為參數(shù)傳給另一個(gè)函數(shù),那么另一個(gè)函數(shù)執(zhí)行過程中或執(zhí)行以后就可以通過這個(gè)指針調(diào)用預(yù)先設(shè)定好的用戶函數(shù)了。