|
不少人在學(xué)習(xí)C語言的過程中總是會(huì)把“指針函數(shù)”與“函數(shù)指針”搞混淆,為了讓大家更好的去理解這兩者之間的區(qū)別,今天在這里整理了C語言中指針函數(shù)與函數(shù)指針的詳解,需要的朋友可以參考一下: 指針函數(shù)的定義:指針函數(shù)是指帶指針的函數(shù),即本質(zhì)是一個(gè)函數(shù)。函數(shù)都有返回類型(如果不返回值,則為無值型),只不過指針函數(shù)返回類型是某一類型的指針。 指針函數(shù):返回值是一個(gè)指針 代碼示例: int* add(int a, int b) { int *p = new int(0); *p = a + b; return p; } 一個(gè)函數(shù)不僅可以帶回一個(gè)整型數(shù)據(jù)的值,字符類型值和實(shí)型類型的值,還可以帶回指針類型的數(shù)據(jù),使其指向某個(gè)地址單元。 返回指針的函數(shù),一般定義格式為: 類型標(biāo)識(shí)符 *函數(shù)名(參數(shù)表) int *f(x,y); 其中x,y是形式參數(shù),f是函數(shù)名,調(diào)用后返回一個(gè)指向整型數(shù)據(jù)的地址指針。f(x,y)是函數(shù),其值是指針。 函數(shù)指針 指向函數(shù)的指針包含了函數(shù)的地址,可以通過它來調(diào)用函數(shù)。聲明格式如下: 類型說明符 (*函數(shù)名)(參數(shù)) 其實(shí)這里不能稱為函數(shù)名,應(yīng)該叫做指針的變量名。函數(shù)類型 (*指針變量名)(形參列表); “函數(shù)類型”說明函數(shù)的返回類型,由于“()”的優(yōu)先級(jí)高于“*”,所以指針變量名外的括號(hào)必不可少,后面的“形參列表”表示指針變量指向的函數(shù)所帶的參數(shù)列表。 例如: int (*f)(int x); double (*ptr)(double x); 在定義函數(shù)指針時(shí)請(qǐng)注意: 函數(shù)指針和它指向的函數(shù)的參數(shù)個(gè)數(shù)和類型都應(yīng)該是—致的; 函數(shù)指針的類型和函數(shù)的返回值類型也必須是一致的。 通過函數(shù)指針調(diào)用函數(shù) 函數(shù)指針是通過函數(shù)名及有關(guān)參數(shù)進(jìn)行調(diào)用的。 與其他指針變量相類似,如果指針變量pi是指向某整型變量i的指針,則*p等于它所指的變量i;如果pf是指向某浮點(diǎn)型變量f的指針,則*pf就等價(jià)于它所指的變量f。同樣地,*f是指向函數(shù)func(x)的指針,則*f就代表它所指向的函數(shù)func。所以在執(zhí)行了f=func;之后,(*f)和func代表同一函數(shù)。 由于函數(shù)指針指向存儲(chǔ)區(qū)中的某個(gè)函數(shù),因此可以通過函數(shù)指針調(diào)用相應(yīng)的函數(shù)。現(xiàn)在我們就討論如何用函數(shù)指針調(diào)用函數(shù),它應(yīng)執(zhí)行下面三步: 首先,要說明函數(shù)指針變量。 例如:int (*f)(int x); 其次,要對(duì)函數(shù)指針變量賦值。 例如: f=func; (func(x)必須先要有定義) 最后,要用 (*指針變量)(參數(shù)表);調(diào)用函數(shù)。 例如: (*f)(x);(x必須先賦值) 不知道大家有沒有看懂呢,這下在學(xué)習(xí)arm的時(shí)候就不會(huì)搞混淆了吧! arm中指針函數(shù)與函數(shù)指針的詳解就給大家介紹到這里了,有自己更好的方法可以在下方評(píng)論處寫出你的見解,大家一起學(xué)習(xí)。需要哪方面的只是也可以通過評(píng)論告訴我,后續(xù)會(huì)不斷的給大家?guī)砭饰恼隆?/p> |
|
|