代碼簡化,促進跨平台開發
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;