天天看點

typedef使用

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

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

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

  用法一:

    typedef int (* func)(int, int);-----------這種用法一般用在給函數定義别名的時候;

    形式:typedef 傳回值類型 (*函數别名)(參數清單)

    上面的例子定義func 是一個函數指針, 函數類型是:參數為兩個int, 傳回值為:int

  分析方法如下:

    先去掉typedef和别名,剩下的就是原變量的類型。

    如:int (*func)(int , int )

      char (*pFun)(int);  //定義了一個指針變量pFun,它是一個指向某種函數的指針,這種函數參數是一個int類型。

      //隻有這一句我們還無法使用這個指針,因為我們還沒對它進行指派

      char glFun(int a){return ;}  //定義量一個函數glFun(),該函數正好是一個以int為參數傳回char的函數,

       //我們從指針的層次上了解函數,函數的函數名實際上就是一個指針,函數名指向該函數的代碼在記憶體中的首位址;

    int main()

    {

      pFun = glFun;

      (*pFun)(2);

      return 0;

    }

  用法二:

    typedef 給變量類型定義一個别名:

    typedef struct{

      int id;

      char name[10];

    }mystruct;

    這裡把一個還未命名的結構體直接取了一個mystruct的别名。

    這樣如果定義結構體的執行個體可以這樣:

      mystruct tmp;

繼續閱讀