C語言 函式指標及其應用

2021-10-16 17:11:36 字數 1216 閱讀 9683

基礎知識:

函式指標(function pointer)就是指向函式的指標變數。

定義函式指標的基本格式為:資料型別 (*指標變數名) (形參列表);資料型別表示這個指標變數所指向的函式的返回值的型別,形參列表表示這個指標變數所指向的函式所具有的形參列表。

例如,若有函式原型為:int fun(int a,int b);則可定義函式指標int (*f)(int,int);f=fun;就是讓f指向函式fun();而若有函式原型為:float fun (float a,float b);則需定義函式指標float (*f)(float,float)f=fun;。若定義時的引數型別與指向的函式引數型別不匹配,例如float (*f)(int,int);//錯誤,則會出現錯誤。

定義函式指標的常見錯誤:

①忘了寫前乙個():int *f(int,int);

②忘了寫後乙個():int (*f);

典型應用

應用一:通用的排序函式

如果我們要實現既能公升序又能降序的功能,則需要分別定義公升序函式和降序函式。事實上這兩個函式只有個別語句不同,其餘全部相同,那我們可以使用函式指標達到編寫乙個既能公升序又能降序的函式。

使用函式指標編寫乙個通用的排序函式

int

ascending

(int a,

int b)

intdescending

(int a,

int b)

//選擇法公升序排序

void

selectionsort

(int a,

int n,

int(

*compare)

(int

,int))

if(k!=i)

}}

應用二:計算任意函式的定積分

c語言,指標,及其應用

既然指標變數的值是乙個位址,那麼這個位址不僅可以是變數的位址,也可以是其它資料結構的位址。在乙個指標變數中存放乙個陣列或乙個函式的首位址有何意義呢?因為陣列或函式都是連續存放的。通過訪問指標變數取得了陣列或函式的首位址,也就找到了該陣列或函式。這樣一來,凡是出現陣列,函式的地方都可以用乙個指標變數來...

9 3函式指標及其應用

函式指標是指向函式的指標,指向儲存這個函式第一條指令的位址,稱為函式的入口位址。int ascending int a,int b int descending int a,int b void selectionsort int a,int n,int compare int a,int b if...

C語言 3 函式指標及其在積分通用函式的應用

這篇博文寫一下函式指標 先來說一下函式,如果定義了乙個函式,在編譯時,編譯系統會為函式 分配一段儲存空間,這段儲存空間的起始位址稱為這個函式的指標。而指標變數顧名思義就是指向函式的指標,我們可以定義乙個指向函式的指標變數,用來存放某一函式的起始位址,這就意味著此指標變數指向該函式。函式指標定義的方法...