在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;