標籤:style color io 使用 ar 資料 div sp on
1聯合union
聯合 (union) 是一個能在同一個儲存空間裡(但不同時)儲存不同類型資料的資料類型。
編譯器為聯合分配足夠的空間儲存所描述的可能性的最大需要。
下面是一個帶有標記的聯合模板例子:
union hold{ //帶有標記的聯合的模板
int digit;
double bigf1;
char letter;
};
下面是定義3個 hold 類型聯合變數的例子
union hold fit; //hold類型的聯合變數
union hold save[10]; //10個聯合變數的數組
union hold *pu; //指向hold類型變數的指標
初始化聯合:
union hold valA;
valA.letter = ‘R‘;
union hold valB = valA; //把一個聯合初始化為另一個聯合
union hold valc = {88}; //初始化聯合的 digit 成員
union hold valD = {.bigf1 = 118.2}; //指定初始化項目
聯合的使用方法:即使有足夠的空間,也不能同時儲存2個值
fit.digit = 23; //把 23 儲存在 fit 中,使用 4 個位元組
fit.bigf1 = 2.0; //清除 23,儲存2.0,使用 8 個位元組
fit.letter = ‘h‘; //清除 2.0,儲存 ‘h‘,使用1個位元組
2枚舉enum
枚舉值屬於構造類型
enum 枚舉名 {枚舉值表};例:enum WeekDay
{
Monday = 1,
TuesDay,
WednesDay,
TursDay,
FriDay,
SaturDay,
SunDay
};
枚舉是指將變數的值一一列出來,變數的值只限於列舉出來的值的範圍內。它用於聲明一組命名的常數,當一個變數有幾種可能的取值時,可以將它定義為枚舉類型。
在枚舉類型中聲明的第一個枚舉成員它的默值為0。以後的枚舉成員值是將前一個枚舉成員(按照文本順序)的值加 1 得到的。這樣增加後的值必須在該基礎類型可表示的值的範圍內;否則,會出現編譯時間錯誤。
1.在C編譯系統中,枚舉值是常量,不是變數,只有在定義時才能對其賦值,不能在程式中再使用指派陳述式對他們賦值。
2.枚舉值是常量,它們是有值的,按定義的順序使它們的值為 0, 1, 2… 。
上面定義的枚舉類型 WeekDay 中,MonDay 的值為 0 ,TuesDay 的值為1 … ,這些都是系統自動賦給的。如果定義時賦值 MonDay=2 ,那麼輸出day的時候 day=4;如果定義時賦值 MonDay=2,同時賦值 FriDay=3 時,輸出 day 的值還是 day=4 。
3.枚舉值可以比較,枚舉值的比較是按其定義時的值進行比較的。 if (SunDay]]]]>Monday) //枚舉值可以進行比較
{
printf("day = %d\n",day);
printf("day2 = %d\n",day2);
}
4.給枚舉變數賦值時不能直接賦整數,因為它們屬於不同的資料類型,應先強制類型轉換才能賦值。
例:enum WeekDay day2;
day2=(enum WeekDay)4;
枚舉類型、等位型別