結構體,共同體

2021-04-18 03:31:25 字數 987 閱讀 2299

共用體

構造資料型別,也叫聯合體

用途:使幾個不同型別的變數共佔一段記憶體(相互覆蓋)

結構體是一種構造資料型別

用途:把不同型別的資料組合成乙個整體-------自定義資料型別

結構體變數所佔記憶體長度是各成員佔的記憶體長度的總和。

共同體變數所佔記憶體長度是各最長的成員佔的記憶體長度。

共同體每次只能存放哪個的一種!!

共同體變數中起作用的成員是尊後一次存放的成員,

在存入新的成員後原有的成員失去了作用!

structure 與 union主要有以下區別:

1. struct和union都是由多個不同的資料型別成員組成, 但在任何同一時刻, union中只存放了乙個被選中的成員, 而struct的所有成員都存在。在struct中,各成員都占有自己的記憶體空間,它們是同時存在的。乙個struct變數的總長度等於所有成員長度之和。在union中,所有成員不能同時占用它的記憶體空間,它們不能同時存在。union變數的長度等於最長的成員的長度。

2. 對於union的不同成員賦值, 將會對其它成員重寫, 原來成員的值就不存在了, 而對於struct的不同成員賦值是互不影響的。

舉乙個例子:

例: #include 

void main()

half;      

}number;      

number.i=0x4241; /*聯合成員賦值*/      

printf("%c%c/n", number.half.first, number.half.second);      

number.half.first='a';                  /*聯合中結構成員賦值*/      

number.half.second='b';      

printf("%x/n", number.i);      

} 輸出結果為:

ab 6261      

結構體和共同體

結構體適用用是將不同型別的資料成員組合到一起,適用於關係緊密和邏輯相關的資料進行處理 與共同體相比較而言,共同體雖然也能表示不同型別資料的資料集合,但是其資料成員的情形是互斥的,每一時刻只有乙個資料成員起作用,例如乙個人的婚姻狀況,未婚 已婚 離婚,這三個狀態在某一時期只能存在一種情況。struct...

結構體 共同體 列舉

列舉 列舉型別的定義形式為 enum typename enum是乙個新的關鍵字,專門用來定義列舉型別,這也是它在c語言中的唯一用途 typename是列舉型別的名字 valuename1,valuename2,valuename3,是每個值對應的名字的列表。注意最後的 不能少。例如,列出乙個星期有...

結構體和共同體

結構體 定義多個不同型別的成員變數組合在一起,以實現複雜的資料結構。格式 struct 標籤名 變數1 變數2 或者 typedef struct 標籤名 示例 struct books book 當兩個結構體互相包含,則需要對其中乙個結構體進行宣告 宣告 struct b 結構體a指向結構體b s...