正文 第45章 結構體與共用體7(2 / 3)

在C語言編譯係統中,枚舉元素在定義時就根據其在列表中的序號被賦以固定的值,這個值是一個常量,在程序執行過程中是不可以動態改變的,因此對枚舉元素是不能作賦值運算的。

如果在枚舉元素列表中沒有特別給出某個元素的序號,則從0開始編號。

如:enumweekdays{sun,mon,tue,wed,thu,fri,sat};

在該枚舉元素列表中,sun的值為0,mon的值為1,依此類推。

枚舉元素的值也可以人為指定,如:

enumweekdays{sun=7,mon=1,tue,wed,thu,fri,sat};

則sun的值為7,mon的值為1,tue的值為2,wed的值為3,依此類推。

C語言除了提供標準類型和構造類型外,還允許用戶通過typedef定義新的類型名來代替已有的類型名。這個新的類型名和C語言提供的類型名一樣也可以定義相應的變量。

定義別名的方法如下:

(1)先按照常規的方法定義一個變量;

(2)將變量名替換成新的類型名;

(3)在變量定義的最前麵加上typedef關鍵詞。

如給int起一個別名INTEGER,可以按以下步驟進行:

(1)inti;

(2)intINTEGER;

(3)typedefintINTEGER;

又如給一個結構體類型student起一個別名STUD,也可以按以下步驟進行:

(1)structstudent

{intnum;

charname[10];

charsex;

intage;}s1;

(2)structstudent

{intnum;

charname[10];

charsex;

intage;}STUD;

(3)typedefstructstudent

{intnum;

charname[10];

charsex;

intage;}STUD;

定義了別名後,就可以直接用別名來定義變量了,如:

INTEGERa,b,c;

STUDs1,s2;

上述方法還可以進一步推廣到為數組、指針起別名,如:

typedefintNUMBER[20];

typedefint*POINTER;

以上NUMBER、POINTER都是類型別名,可以直接用來定義新的數組或指針變量。如NUMBERa、POINTERp1等。

習題十一

一、填空題

1.有以下說明和語句,請寫出引用結構體變量a中的成員num的三種形式、、。

structstudent

{intnum;

charname;

intscore;}a,*b;