[C/C++基礎]-函數指標介紹
l“函數指標”是指向函數的指標變數,因而“函數指標”本身首先應是指標變數。
l只不過該指標變數指向函數。這正如用指標變數可指向整型變數、字元型、陣列一樣,這裏是指向函數。
l如前所述,C/C++在編譯時,每一個函數都有一個進入點位址,該進入點位址就是函數指標所指向的位址。
l有了指向函數的指標變數後,可用該指標變數呼叫函數,就如同用指標變數可引用其他類型變數一樣,在這些概念上一致的。
l函數指標有兩個用途:呼叫函數和做函數的參數。
下面的範例就是一個典型的函數指標應用,有興趣的(C/P)同好,歡迎來(C/P)。
程式碼 |
#include <iostream> usingnamespace std; void procreation(int,void (*run)(char*,int)); /* 以函數指標為參數 */ void slow_run_shoes(char*,int); void leisure_shoes(char*,int); void spiked_shoes(char*,int); int main() { int procreation_number;/* 生產項目代號1~3 */ int size;/* 尺寸 */ procreation_number=2; size=8; switch(procreation_number) { case 1: procreation(size,slow_run_shoes); /* 參數列中傳入函數slow_run_shoes的位址 */ break; case 2: procreation(size,leisure_shoes); /* 參數列中傳入函數leisure_shoes的位址 */ break; case 3: procreation(size,spiked_shoes); /* 參數列中傳入函數spiked_shoes的位址 */ break; default: cout <<"停止生產!!!" <<endl; } getchar(); return 0; } void procreation(int size,void (*run)(char* material,int size)) { char* material; /* 質料名稱 */ int material_number; /* 質料代號1~3 */ material_number=3; switch(material_number) { case 1: material="布"; break; case 2: material="獸皮"; break; case 3: material="塑膠"; } (*run)(material,size); /* 呼叫函數指標 */ } void slow_run_shoes(char* material,int size) { cout <<"以質料為" <<material <<"、尺寸為" <<size <<"來生產慢跑鞋" <<endl; } void leisure_shoes(char* material,int size) { cout <<"以質料為" <<material <<"、尺寸為" <<size <<"來生產休閒鞋" <<endl; } void spiked_shoes(char* material,int size) { cout <<"以質料為" <<material <<"、尺寸為" <<size <<"來生產釘鞋" <<endl; }
|
沒有留言:
張貼留言