7.4 用戶自定義類型
C語言也提供類型定義外化成為類型命名的機制。讓用戶定義新的類型,并用這些新類型定義變量。用戶自定義類型的方法為:
typedef 類型 用戶自定義類型名;
其中類型可以是基本類型,也可以是前面用戶自定義的類型,也還可以是任何C語言允許的類型描述,如數(shù)組類型、結(jié)構(gòu)型、共用型、枚舉型,及各種指針類型。用戶自定義類型名是標識符,以后就可用該用戶自定義類型名定義相應(yīng)類型的變量。例如:
typedef int INTEGER;
tyPedef struet {
int num;
char * name;
char sex;
int age;
int score;
} stdType; /*定義結(jié)構(gòu)型stdType */
typedef int INTARRAy[20] ; /* 含 20個整數(shù)的數(shù)組類型 INTARRAY */
typedef enum { RED, YELLOW, BLUE } COLOR; /* 枚舉型COLOR */
typedef char *CHP; /* 定義字符指針類型CHP */
利用以上類型定義,可定義變量如下:
INTEGER X,Y; /* 定義int類型變量 x和 y */
stdType std1,std2; /* 定義兩個結(jié)構(gòu)變量 */
INTARRAY v1, v2; /* 定義兩個各含20個整數(shù)的數(shù)組 */
COLOR c1,c2; /* 定義兩個枚舉變量 */
CHP cp1, cp2; /* 定義字符指針變量cpl和cp2 */
在以上變量定義中,對于結(jié)構(gòu)、枚舉等類型,不必再冠相應(yīng)的類型類別關(guān)鍵字。特別對于數(shù)組類型,當有多個數(shù)組變量成員類型相同、數(shù)組元素個數(shù)也相同時,先用typedef定義一個數(shù)組類型,然后再定義數(shù)組變量就比較方便、簡潔。
通常,在組織復雜的程序時,不同源程序文件中用到的同一數(shù)據(jù)類型,如數(shù)組、結(jié)構(gòu)、共用型、指針等,常用外typedef定義來給有關(guān)數(shù)據(jù)類型命名,并將這些類型定義單獨放在一個源文件中,凡要用到它們的源文件,就用# include預處理命令將它包含進來。