目錄
什么是函數指針?
函數指針的定義
定義函數指針時的常見錯誤
函數指針有什么用?
函數指針的主要應用
什么是函數指針?
函數指針 (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 ); // 錯誤
float (*f) () ; // 不建議
定義函數指針時的常見錯誤
int (*f) (int, int);
? 忘了寫前一個()
int *f (int, int);
? 聲明了一個函數名為 f 、 返回值是整型指針類型的函數
? 忘了寫后一個()
int (*f);
? 定義了一個 整型指針變量
函數指針有什么用?
函數指針的主要應用
函數指針的主要應用
? 編寫通用性更強的函數
? 典型實例1
? 通用的計算任意函數定積分的函數
? 典型實例2
? 通用的排序函數(既能升序,又能降序)