Union使得同壹個內存段可以根據不同的數據類型進行訪問,數據實際上存儲在同壹個位置。它的聲明和使用看起來與結構非常相似,但它的實際功能完全不同:
工會?型號_名稱?{
鍵入1?element 1;
type2?元素2;
type3?元素3;
。
。
}?object _ name聯合中所有聲明的元素占用相同的內存空間,其大小是聲明中最長元素的大小。例如:
工會?mytypes_t?{
夏爾?c;
int?我;
浮動?f;
}?我的類型;定義了三個元素:
mytypes.c
mytypes.i
mytypes.f每壹種都是不同的數據類型。因為它們都指向相同的內存空間,所以更改壹個元素的值會影響所有其他元素的值。
union的用途之壹是將long基本類型與由其他較小數據類型組成的結構或數組相結合,例如:
工會?混合_t{
龍?l;
struct?{
矮?嗨;
矮?lo;
}?s;
夏爾?c[4];
}?混合;上例定義了三個名字:mix.l、mix.s、mix.c,妳可以通過這三個名字訪問同壹個4字節內存空間。至於用哪個名字來訪問,那要看妳想用什麽數據類型,是long,short還是char。下圖顯示了內存中該聯合中每個元素的可能結構,以及如何通過不同的數據類型訪問它:
第二,enum枚舉
1.枚舉的定義
枚舉類型定義的壹般形式是:
?enum?枚舉名稱{?枚舉值表?};所有可用值都應列在枚舉值列表中。這些值也稱為枚舉元素。
例如:
枚舉命名為weekday,有七個枚舉值* * *,即壹周中的七天。描述為工作日類型的變量值只能是七天中的壹天。
2.枚舉變量的描述
與結構和聯合壹樣,枚舉變量可以用不同的方式描述,即先定義後描述,也可以定義或直接描述。
變量A、B和C被描述為上述工作日,並且可以采用以下任何方法:
enum?工作日{?星期日,星期壹,星期二,星期三,星期四,星期五,星期六?};
enum?工作日?甲、乙、丙;或用於:
enum?工作日{?星期日,星期壹,星期二,星期三,星期四,星期五,星期六?}a,b,c;或用於:
enum?{?星期日,星期壹,星期二,星期三,星期四,星期五,星期六?}a,b,c;3.枚舉類型變量的賦值和使用。
枚舉類型在使用中有以下規定:
A.枚舉值是常量,不是變量。妳不能在程序中用賦值語句給它賦值。
例如,對枚舉weekday的元素進行以下賦值:
?孫= 5;
mon = 2;
sun = mon都是錯的。
B.枚舉元素本身由系統用壹個代表序號的數值來定義,從0開始定義為0,1,2…等。例如,在工作日,sun值為0,mon值為1,…,sat值為6。
#包含?& ltstdio.h & gt
int?主()
{
enum?工作日?{?周日,周壹,周二,周三,周四,周五,周六?}?甲、乙、丙;
a =孫;
b = mon
c = tue
printf("%d,%d,%d ",a,b,c);
回歸?0;
}描述:
只有枚舉值可以賦給枚舉變量,元素的數值不能直接賦給枚舉變量。比如:
a =總和;
b = mon是正確的。並且:
a = 0;
b = 1;是錯誤的。如果必須給枚舉變量賦值,就必須使用cast。
比如:
?a=(enum?工作日)2;其意義在於將序號為2的枚舉元素賦予枚舉變量A,相當於:
a = tue