C語言的函數(shù)指針

一沙热、怎樣定義函數(shù)指針變量脓斩?

下面的語句香椎,定義一個函數(shù)指針fnPtr:

int (*fnPtr) (void);

這與函數(shù)定義行相似,但有兩點不同:

1 加了星號抗斤,說明是指針

2 指針名連同星號外面加了圓括號

這兩點把它與函數(shù)定義行區(qū)分開來囚企。

與函數(shù)定義行相同的是返回類型有函數(shù)參數(shù),這兩者寫法一致瑞眼。

二龙宏、怎樣將函數(shù)指針賦給函數(shù)指針變量?

首先伤疙,函數(shù)需要先定義银酗。

前面的例子中,如果事先定義了一個函數(shù)

lookup:

int lookup (void);

我們就可以執(zhí)行下面的語句:

fnPtr = lookup;

這個語句將lookup的指針賦給fnPtr.

也可以寫成

fnPtr = &lookup;

但是用不著徒像。

三黍特、怎樣用函數(shù)指針變量調(diào)用函數(shù)?

如果函數(shù)指針變量指向了一個特定的函數(shù)锯蛀,則可以用它來調(diào)用這個函數(shù)灭衷。

在上面的例子中,fnPtr已經(jīng)指向了函數(shù)lookup旁涤,所以翔曲,下面的語句就調(diào)用函數(shù)lookup:

entry = fnPtr ();

也可以用:Entry = (*fnPtr) ()

兩者的功能一樣。

四劈愚、函數(shù)指針變量的用處

1 將函數(shù)指針變量作函數(shù)的參數(shù)瞳遍。

2 將函數(shù)指針放進(jìn)數(shù)組中。

下面舉qsort函數(shù)的例子菌羽,它有個函數(shù)指針參數(shù):

void qsort (arr, n, size, comp_fn)

原型:void qsort(void*base,size_t num,size_t width,int(__cdecl*compare)(const void*,const void*));

使用它的示例程序:

#include <stdio.h>

#include <stdlib.h>

int comp_ints_asc (void *p1, void *p2)

{

? ? int i1 = * (int *) p1;

? ? int i2 = * (int *) p2;

? ? return i1 - i2;

}

int comp_ints_des (void *p1, void *p2)

{

? ? int i1 = * (int *) p1;

? ? int i2 = * (int *) p2;

? ? return i2 - i1;

}

int main (void)

{

? ? int comp_ints (void *, void *);

? ? int data[10]={8,7,-3,-1,9,6,8,7,3,1};

? ? int i;

? ? qsort (data, 10, sizeof(int), comp_ints_asc);

? ? for (i=0;i<10;i++){

? ? ? ? printf("%i ",data[i]);

? ? }

? ? printf("\n\n");

? ? qsort (data, 10, sizeof(int), comp_ints_des);

? ? for (i=0;i<10;i++){

? ? ? ? printf("%i ",data[i]);

? ? }

? ? printf("\n");

}

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末掠械,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子算凿,更是在濱河造成了極大的恐慌份蝴,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件氓轰,死亡現(xiàn)場離奇詭異婚夫,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)署鸡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進(jìn)店門案糙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來限嫌,“玉大人,你說我怎么就攤上這事时捌∨剑” “怎么了?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵奢讨,是天一觀的道長稚叹。 經(jīng)常有香客問我,道長拿诸,這世上最難降的妖魔是什么扒袖? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮亩码,結(jié)果婚禮上季率,老公的妹妹穿的比我還像新娘。我一直安慰自己描沟,他們只是感情好飒泻,可當(dāng)我...
    茶點故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著吏廉,像睡著了一般泞遗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上迟蜜,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天刹孔,我揣著相機(jī)與錄音,去河邊找鬼娜睛。 笑死髓霞,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的畦戒。 我是一名探鬼主播方库,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼障斋!你這毒婦竟也來了纵潦?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤垃环,失蹤者是張志新(化名)和其女友劉穎邀层,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體遂庄,經(jīng)...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡寥院,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了涛目。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片秸谢。...
    茶點故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡凛澎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出估蹄,到底是詐尸還是另有隱情塑煎,我是刑警寧澤,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布臭蚁,位于F島的核電站最铁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏垮兑。R本人自食惡果不足惜炭晒,卻給世界環(huán)境...
    茶點故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望甥角。 院中可真熱鬧,春花似錦识樱、人聲如沸嗤无。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽当犯。三九已至,卻和暖如春割疾,著一層夾襖步出監(jiān)牢的瞬間嚎卫,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工宏榕, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留拓诸,地道東北人。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓麻昼,卻偏偏與公主長得像奠支,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子抚芦,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,982評論 2 361

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