指向函數的指針


函數可以在表達式中被解讀為“指向函數的指針”,函數名就是該指針。“指向函數的指針”本質上也是指針(地址),所以可以將它賦值給指針型變量。

那么“指向函數的指針的變量”如何聲明呢?

比如有以下函數原型:

int func(double d);

保存指向該函數的指針的變量的聲明如下:

int (*func_p)(double);

其中func_p是指針變量。

通過func_p調用func大體上是這樣子:

int (*func_p)(double); // declaration

func_p = func; // assignment

func_p(0.5);  // now func_p is functionally the same as func

將“指向函數的指針”保存在變量中的技術經常被運用在以下場合:

1) GUI按鈕控件“當自身被按下時需要調用的函數”

2) 根據“指向函數的指針的數組”對處理進行分配

“指向函數的指針的數組”這樣定義:

int (*func_table[])(double) = {

func0,

func1,

func2,

func3

};

func_table[i](0.5);  //調用func_table[i]的函數,參數是0.5

 

使用上面的寫法,不需要很長的switch case,只需要通過i就可以對處理進行分配。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM