IOS typedef 函數指針的用法

代碼簡化, 促進跨平臺開發的目的.

 typedef 行爲有點像 #define 宏,用其實際類型替代同義字。

 不同點:typedef 在編譯時被解釋,因此讓編譯器來應付超越預處理器能力的文本替換

用法一:

typedef int (*MYFUN)(int, int)
這種用法一般用在給函數定義別名的時候
上面的例子定義MYFUN 是一個函數指針, 函數類型是帶兩個int 參數, 返回一個int 

分析這種形式的定義的時候可以用下面的方法: 
先去掉typedef 和別名剩下的就是原變量的類型. 
去掉typedef和MYFUN以後就剩:
 
int (*)(int, int)

用法二:

typedef給變量類型定義一個別名.

typedef struct{ 
int a; 
int b; 
}MY_TYPE

這裏把一個未命名結構直接取了一個叫MY_TYPE的別名, 這樣如果你想定義結構的實例的時候就可以這樣: 
MY_TYPE tmp;

第二種用法:typedef 原變量類型 別名

簡單的函數指針的用法

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

char(*pFun)(int);

//typedef char(*pFun)(int)   //跟上一行功能等同

/*typedef的功能是定義新的類型。第一句就是定義了一種PTRFUN的類型,並定義這種類型爲指向某種函數的指針,這種函數以一個int爲參數並返回char類型。*/

char glFun(int a){return;}

void main()

{

pFun =glFun;

(*pFun)(2);

}

第一行定義了一個指針變量pFun.它是一個指向某種函數的指針,這種函數參數是一個int類型,返回值是char類型。只有第一句我們還無法使用這個指針,因爲我們還未對它進行賦值

第二行定義了一個函數glFun().該函數正好是一個以int爲參數返回char的函數。我們要從指針的層次上理解函數-函數的函數名實際上就是一個指針函數名指向該函數的代碼在內存中的首地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章