基礎知識:
函式指標(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 函式指標及其在積分通用函式的應用
這篇博文寫一下函式指標 先來說一下函式,如果定義了乙個函式,在編譯時,編譯系統會為函式 分配一段儲存空間,這段儲存空間的起始位址稱為這個函式的指標。而指標變數顧名思義就是指向函式的指標,我們可以定義乙個指向函式的指標變數,用來存放某一函式的起始位址,這就意味著此指標變數指向該函式。函式指標定義的方法...