IOS typedef 函數指標的用法

來源:互聯網
上載者:User

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

 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的函數。我們要從指標的層次上理解函數-函數的函數名實際上就是一個指標函數名指向該函數的代碼在記憶體中的首地址

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.