typedef工具是乙個高階的資料特性,利用拖油瓶edef可以為某一型別自定義名稱。這方面和#define類似,但是兩者有3處不同:
與#define不同,typedef建立的符號名,只受限於型別,不能用於值。
typedef由編譯器解釋,不是預處理器。
在其受限範圍內,typedef比#define更靈活。
下面是typedef的幾種用法:
1.常規變數型別定義
例如:typedef unsigned char uchar
描述:uchar等價於unsigned char型別定義 uchar c宣告等於unsigned char c宣告
2.陣列型別定義
例如: typedef int array[2];
描述: array等價於 int [2]定義; array a宣告等價於int a[2]宣告
擴充套件: typedef int array[m][n];
描述: array等價於 int [m][n]定義; array a宣告等價於int a[m][n]宣告
3.指標型別定義
例如: typedef int *pointer;
描述: pointer等價於 int *定義;pointer p宣告等價於int *a宣告
例如: typedef int *pointer[m];
描述: pointer等價於 int *[m]定義 pointer p宣告等價於int *a[m]宣告明
4.函式位址說明
描述:c把函式名字當做函式的首位址來對待,我們可以使用最簡單的方法得到函式位址
例如: 函式:int func(void); unsigned long funcaddr=(unsigned long)func, funcaddr的值是func函式的首位址
5.函式宣告
例如: typedef int func(void); func等價於 int (void)型別函式
描述1: func f宣告等價於 int f(void)宣告,用於檔案的函式宣告
描述2: func *pf宣告等價於 int (*pf)(void)宣告,用於函式指標的生命,見下一條
6.函式指標
例如: typedef int (*func)(void)
描述: func等價於int (*)(void)型別
func pf等價於int (*pf)(void)宣告,pf是乙個函式指標變數
識別typedef的方法:
a).第一步。使用已知的型別定義替代typdef後面的名稱,直到只剩下乙個名字不識別為正確
b).第二步.未知名字為定義型別,型別為取出名稱和typedef的所有部分,
c).第三部.定義乙個變數時,變數型別等價於把變數替代未知名字的位置所得到的型別
常見用法參考自:
C語言學習 十六 typedef
typedef是關鍵字,可以使用它來為型別取乙個新的名字,下面的例項為單位元組數字定義了乙個術語byte typedef unsigned char byte 在這個型別定義之後,識別符號byte可作為型別unsigned char的縮寫,例如 byte b1,b2 按照慣例,定義時會大寫字母,以便...
C語言學習(十四) typedef學習
typedef是c語言的關鍵字 作用是為一種資料型別定義乙個新名字 這裡的資料型別包括內部資料型別 int,char等 和自定義的資料型別 struct等 和struct來匹配為了 編寫簡潔和普通型別匹配,通過名字來獲取資訊 typedef和自定義結構體struct配合使用時,常常進行另外命名的同時...
c語言學習(二)typedef宣告結構體
2 struct宣告結構體 3 typedef和struct共同宣告 總結記錄一下在c語言中 c 和c中typedef又有區別,這裡暫時不介紹 typedef宣告結構體與struct直接宣告結構體有什麼區別 include typedef struct add int main 通過typedef宣...