第七章 函數(shù)(8)函數(shù)指針

(八)函數(shù)指針

1.函數(shù)的地址

??? 與變量一樣狡孔,函數(shù)也是有地址的泞歉,函數(shù)的地址指的是存儲(chǔ)函數(shù)的物理內(nèi)存的地址,可以編寫以函數(shù)地址為參數(shù)的函數(shù)豆赏,一般說(shuō)來(lái)這樣比直接使用函數(shù)要笨拙束凑,但是這可以使函數(shù)在不同的時(shí)間傳遞不同函數(shù)的地址晒旅,也就是使用不同的函數(shù),在某些情況下是有用的汪诉。

2.函數(shù)指針的相關(guān)知識(shí)

(1)要使用函數(shù)指針來(lái)調(diào)用函數(shù)废恋,需要:獲取函數(shù)的地址聲明一個(gè)函數(shù)指針扒寄;使用函數(shù)指針來(lái)調(diào)用函數(shù)鱼鼓。

(2)獲取函數(shù)的地址。只要函數(shù)后面不加參數(shù)该编,那么函數(shù)名就是函數(shù)的地址迄本。比如think()是一個(gè)函數(shù),那么think就是函數(shù)的地址课竣。一定要區(qū)分傳遞的是函數(shù)的地址還是函數(shù)的返回值嘉赎,函數(shù)的地址是函數(shù)名,不帶括號(hào)和參數(shù)于樟,而如果帶了括弧和參數(shù)曹阔,則將會(huì)調(diào)用函數(shù),而將函數(shù)的返回值傳遞過(guò)來(lái)隔披。

(3)聲明函數(shù)指針赃份。int (*a)(int b);或者直接int (*a)(int);其中函數(shù)的返回值和參數(shù)列表(特征標(biāo))都要跟原函數(shù)的聲明一模一樣抓韩。一般我們可以在聲明完了函數(shù)之后纠永,將函數(shù)名改寫成指針形式(*a)即可聲明指針。這里要注意括號(hào)不能省略谒拴,省略了括號(hào)就是聲明了一個(gè)返回指針的函數(shù)尝江,而不省略括號(hào)就是聲明了一個(gè)函數(shù)指針。

(4)使用指針來(lái)調(diào)用函數(shù)英上。這有兩種方式炭序,都是可以的,我們一般使用第一種苍日。第一種是使用*a表示函數(shù)名惭聂,*a就和函數(shù)名一樣,用法也是相同的相恃。第二種方法是直接使用指針辜纲,也跟函數(shù)名一樣的用法。這是兩種理念拦耐,是矛盾的耕腾,但在c++中,選擇了兩種方式都允許的策略杀糯。

3.深入探討函數(shù)指針

??? 可以在聲明的時(shí)候?qū)瘮?shù)指針進(jìn)行初始化扫俺,比如int(*a)(double)=p;p是一個(gè)參數(shù)和返回值跟*a相同的函數(shù)名固翰。也可以使用自動(dòng)匹配的auto的形式聲明指針牵舵,比如auto a=p;p是一個(gè)函數(shù)名倦挂,這是一種更簡(jiǎn)單的方式畸颅。

??? 如果要聲明函數(shù)指針數(shù)組,應(yīng)該在什么地方加[]呢方援?答案如下:int (*a[3])(double)={f1没炒,f2,f3};[]的優(yōu)先級(jí)要比*高,因此這里是聲明了包含有三個(gè)指針的函數(shù)指針數(shù)組犯戏。自動(dòng)類型匹配只適用于單值初始化送火,不能用于初始化列表。

??? 當(dāng)函數(shù)指針和數(shù)組等知識(shí)結(jié)合起來(lái)使用的時(shí)候先匪,將會(huì)非常復(fù)雜种吸,但是只要注意一點(diǎn)就可以順利破解難題,那就是數(shù)組名實(shí)際上是數(shù)組第一個(gè)元素的地址呀非,而對(duì)數(shù)組名取地址(如&a)表示的是整個(gè)數(shù)組的地址或者說(shuō)是一個(gè)二維數(shù)組名坚俗,需要進(jìn)行兩次解除引用才能得到第一個(gè)元素的內(nèi)容镜盯。知道了這一點(diǎn)后,即使加上函數(shù)指針的內(nèi)容猖败,也不難理解速缆。

??? 函數(shù)名與函數(shù)地址的作用相同。

??? 6魑拧R彰印!4鄙小破停!使用函數(shù)指針,可以實(shí)現(xiàn)由一種接口實(shí)現(xiàn)不同的功能尉剩,對(duì)于程序的模塊化設(shè)計(jì)非常有利真慢。

4.使用typedef進(jìn)行簡(jiǎn)化

??? 除了使用類型自動(dòng)推斷auto來(lái)進(jìn)行聲明簡(jiǎn)化之外,還可以利用typedef來(lái)進(jìn)行聲明的簡(jiǎn)化边涕,typedef的用法是聲明一個(gè)類型的別名,前面加上typedef褂微,后面相當(dāng)于聲明了一個(gè)變量功蜓,不同的是這個(gè)變量名就是類型的別名。比如typedef const double *(*p_function)(const double*,int);p_function p1=f1;p_function就是一個(gè)函數(shù)指針的別名宠蚂,可以用這個(gè)別名對(duì)函數(shù)指針聲明進(jìn)行簡(jiǎn)化式撼。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市求厕,隨后出現(xiàn)的幾起案子著隆,更是在濱河造成了極大的恐慌,老刑警劉巖呀癣,帶你破解...
    沈念sama閱讀 217,734評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件美浦,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡项栏,警方通過(guò)查閱死者的電腦和手機(jī)浦辨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)沼沈,“玉大人流酬,你說(shuō)我怎么就攤上這事×辛恚” “怎么了芽腾?”我有些...
    開封第一講書人閱讀 164,133評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)页衙。 經(jīng)常有香客問(wèn)我摊滔,道長(zhǎng),這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,532評(píng)論 1 293
  • 正文 為了忘掉前任惭载,我火速辦了婚禮旱函,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘描滔。我一直安慰自己棒妨,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,585評(píng)論 6 392
  • 文/花漫 我一把揭開白布含长。 她就那樣靜靜地躺著券腔,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拘泞。 梳的紋絲不亂的頭發(fā)上纷纫,一...
    開封第一講書人閱讀 51,462評(píng)論 1 302
  • 那天,我揣著相機(jī)與錄音陪腌,去河邊找鬼辱魁。 笑死,一個(gè)胖子當(dāng)著我的面吹牛诗鸭,可吹牛的內(nèi)容都是我干的染簇。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼强岸,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼锻弓!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起蝌箍,我...
    開封第一講書人閱讀 39,153評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤青灼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后妓盲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體杂拨,經(jīng)...
    沈念sama閱讀 45,587評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,792評(píng)論 3 336
  • 正文 我和宋清朗相戀三年悯衬,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了扳躬。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,919評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡甚亭,死狀恐怖贷币,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情亏狰,我是刑警寧澤役纹,帶...
    沈念sama閱讀 35,635評(píng)論 5 345
  • 正文 年R本政府宣布,位于F島的核電站暇唾,受9級(jí)特大地震影響促脉,放射性物質(zhì)發(fā)生泄漏辰斋。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,237評(píng)論 3 329
  • 文/蒙蒙 一瘸味、第九天 我趴在偏房一處隱蔽的房頂上張望宫仗。 院中可真熱鬧,春花似錦旁仿、人聲如沸藕夫。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)毅贮。三九已至,卻和暖如春尘奏,著一層夾襖步出監(jiān)牢的瞬間滩褥,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工炫加, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瑰煎,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,048評(píng)論 3 370
  • 正文 我出身青樓俗孝,卻偏偏與公主長(zhǎng)得像酒甸,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子驹针,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,864評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容