typedef void (*Fun) (void) 的理解——函數指針——typedef函數指針

首先介紹大家比較熟悉的typedef

[cpp] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. int i;//定義一個整型變量i  
  2. typedef myInt int;  
  3. myInt j;//定義一個整型變量j  


上面介紹得是我們常用的比較簡單的typedef的用法,下面首先介紹一下函數指針。

函數指針的形式:

形式1:返回類型(*函數名)(參數表) 

[cpp] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. #include <iostream>  
  2.   
  3. using namespace std;  
  4. //定義一個函數指針pFUN,它指向一個返回類型爲char,有一個整型的參數的函數  
  5. char (*pFun)(int);  
  6. //定義一個返回類型爲char,參數爲int的函數  
  7. //從指針層面上理解該函數,即函數的函數名實際上是一個指針,  
  8. //該指針指向函數在內存中的首地址  
  9. char glFun(int a)  
  10. {  
  11.     cout << a;  
  12.     //return a;  
  13. }  
  14.   
  15. int main()  
  16. {  
  17. //將函數glFun的地址賦值給變量pFun  
  18.     pFun = glFun;  
  19. //*pFun”顯然是取pFun所指向地址的內容,當然也就是取出了函數glFun()的內容,然後給定參數爲2。  
  20.     (*pFun)(2);  
  21.     return 0;  
  22. }  

通過上面的一個小例子,我們知道了函數指針的用法,

typedef可以讓函數指針更直觀方便

形式2:typedef  返回類型(*新類型)(參數表)

[cpp] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. typedef char (*PTRFUN)(int);   
  2. PTRFUN pFun;   
  3. char glFun(int a){ return;}   
  4. void main()   
  5. {   
  6.     pFun = glFun;   
  7.     (*pFun)(2);   
  8. } </span>  
 typedef的功能是定義新的類型。第一句就是定義了一種PTRFUN的類型,並定義這種類型爲指向某種函數的指針,這種函數以一個int爲參數並返回char類型。後面就可以像使用int,char一樣使用PTRFUN了。
           第二行的代碼便使用這個新類型定義了變量pFun,此時就可以像使用形式1一樣使用這個變量了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章