?? codetc28.dat
字號:
共用體
有時需要使幾種不同類型的變量存放到同一段內存單元中.例如,可把一個整型變量,一個字符型變量,一個實型變量放在同一個地址開始的內存單元中.也就是使用覆蓋技術, 幾個變量互相覆蓋.這種使幾個不同的變量共占同一段內存的結構,稱為"共用體"類型的結構.
定義共用體類型變量的一般形式為
union 共用體名
{
成員表列
}變量列表;
例如: union data
{
int i;
char ch;
float f;
}a,b,c;
也可以將類型聲明與變量定義分開:
union data
{
int i;
char ch;
float f;
};
union data a,b,c;
可看到"共用體"與"結構體"的定義形式相似.但它們的含義是不同的.
結構體變量所占內存長度是各成員的內存長度之和.每個成員分別占有其自已的內存單元.
共用體變量所占的內存長度等于最長的成員的長度.
共用體變量的引用方式
只有先定義共用體變量才能引用它.而且不能引用共用體變量,而只能引用共用體變量中的成員.
例如,前面定義了a,b,c為共用體變量,下面的引用方式是正確的:
a.i (引用共用體變量中的類型變量 i)
a.ch (引用共用體變量中的類型變量 ch)
a.f (引用共用體變量中的類型變量 f)
不能只引用共用體變量,下面的引用方式是錯誤的,例如
printf("%d",a)
共用體類型數據的特點
在使用共用體類型數據時要注意以下一些特點:
(1) 同一個內存段可以用來存放幾種不同類型的成員,但在每一瞬間時只能存放其中一種,而不是同時存放幾種.也就是說,每一瞬間時只有一個成員起作用,其他的成員不作用 ,即不是同時都存在和起作用的.
(2) 共用體變量中起作用的成員是最后一次存放的成員,在存入一個新的成員后原有的成員就失去作用.
(3) 共用體變量的地址和它的各成員的地址都是同一地址.
(4) 不能對共用體變量名賦值,也不能企圖引用變量名來得到一個值,又不能在定義共用體變量時對它初始化.
(5) 不能把共用體變量作為函數參數,也不能使函數帶回共用體變量,但可以使用指向共用體變量的指針.
(6) 共用體類型可以出現在結構體類型定義中,也可以定義共用體數組.反之,結構體可以出現在共用體類型定義中,數組也可以作為共用體的成員.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -