C語言中的union聯合變數是什麼意思

2021-10-03 01:46:57 字數 881 閱讀 7506

什麼是聯合變數

c語言中的union 是聯合體,就是乙個多個變數的結構同時使用一塊記憶體區域,區域的取值大小為該結構中長度最大的變數的值

聯合的定義

定義乙個聯合型別的一般形式為:

union 聯合名

;成員表中含有若干成員,成員的一般形式為: 型別說明符 成員名

。成員名的命名應符合識別符號的規定。例如:

union perdata

a,b;

或直接說明為:

union

a,b ;

經說明後的a,b變數均為perdata型別。 a,b變數的長度應等於 perdata 的成員中最長的長度, 即等於office陣列的長度,共10個位元組。從圖中可見,a,b變數如賦予整型值時,只使用了2個位元組,而賦予字元陣列時,可用10個位元組。

聯合變數的賦值和使用

對聯合變數的賦值和使用都只能是對變數的成員進行。聯合變數的成員表示為: 聯合變數名.成員名 例如,a被說明為perdata型別的變數之後,可使用 a.class a.office 不允許只用聯合變數名作賦值或其它操作。 也不允許對聯合變數作初始化賦值,賦值只能在程式中進行

聯合」與「結構」

兩者有一些相似之處。但兩者有本質上的不同。在結構中各成員有各自的記憶體空間, 乙個結構變數的總長度是各成員長度之和。而在「聯合」中,各成員共享一段記憶體空間, 乙個聯合變數的長度等於各成員中最長的長度。應該說明的是, 這裡所謂的共享不是指把多個成員同時裝入乙個聯合變數內, 而是指該聯合變數可被賦予任一成員值,但每次只能賦一種值, 賦入新值則衝去舊值。聯合型別的定義和聯合變數的說明乙個聯合型別必須經過定義之後, 才能把變數說明為該聯合型別。

C語言中的聯合體union

在c c 程式的編寫中,當多個基本資料型別或復合資料結構要占用同一片記憶體時,我們要使用聯合體 當多種型別,多個物件,多個事物只取其一時 我們姑且通俗地稱其為 n 選1 我們也 可以使用聯合體來發揮其長處。首先看一段 union myun u int k a int main union型別是共享記...

C語言中的聯合體union

在c c 程式的編寫中,當多個基本資料型別或復合資料結構要占用同一片記憶體時,我們要使用聯合體 當多種型別,多個物件,多個事物只取其一時 我們姑且通俗地稱其為 n 選1 我們也 可以使用聯合體來發揮其長處。首先看一段 union myun u int k a int main union型別是共享記...

C語言中的聯合體union

在c c 程式的編寫中,當多個基本資料型別或復合資料結構要占用同一片記憶體時,我們要使用聯合體 當多種型別,多個物件,多個事物只取其一時 我們姑且通俗地稱其為 n 選1 我們也可以使用聯合體來發揮其長處。首先看一段 union myun u int k a int main union型別是共享記憶...