聯合數據類型

聯合數據類型

聯合數據類型(Union)是一種特殊的數據類型。它可以實現:以一種數據類型存儲數據,以另一種數據類型來讀取數據。程式設計師可以根據不同的需要,以不同的數據類型來讀取聯合類型中的數據。也就是說,在一些情況下,以一種數據類型來讀取聯合類型中的數據,而在另一些情況下,又以另一種數據類型來讀取其數據。

基本介紹

簡介,聯合的用法,小結,

簡介

結構與聯合
結構類型定義和結構變數說明
在實際問題中,一組數據往往具有不同的數據類型。例如, 在學生登記表中,姓名應為字元型;學號可為整型或字元型;年齡應為整型;性別應為字元型;成績可為整型或實型。 顯然不能用一個數組來存放這一組數據。因為數組中各元素的類型和長度都必須一致,以便於編譯系統處理。為了解決這個問題,C語言中給出了另一種構造數據類型——“結構”。它相當於其它高級語言中的記錄。
“結構”是一種構造類型,它是由若干“成員”組成的。 每一個成員可以是一個基本數據類型或者又是一個構造類型。 結構既是一種“構造”而成的數據類型, 那么在說明和使用之前必須先定義它,也就是構造它。如同在說明和調用函式之前要先定義函式一樣。

聯合的用法

其用法和結構體類型(struct)一致。
union number{
int x;
long y;
double z;
};
number num = (4,15,30.7);
聯合類型的所有成員在同一時刻只能有一個起作用,因此他占用的記憶體空間是所有成員中最大那個的大小。
使用聯合類型時,應該特別注意有效成員是哪個。

小結

  1. 結構和聯合是兩種構造類型數據,是用戶定義新數據類型的重要手段。結構和聯合有很多的相似之處,它們都由成員組成。成員可以具有不同的數據類型。成員的表示方法相同。都可用三種方式作變數說明。
  2. 在結構中,各成員都占有自己的記憶體空間,它們是同時存在的。一個結構變數的總長度等於所有成員長度之和。在聯合中,所有成員不能同時占用它的記憶體空間,它們不能同時存在。聯合變數的長度等於最長的成員的長度。
  3. “.”是成員運算符,可用它表示成員項,成員還可用“->”運算符來表示。
  4. 結構變數可以作為函式參數,函式也可返回指向結構的指針變數。而聯合變數不能作為函式參數,函式也不能返回指向聯合的指針變數。但可以使用指向聯合變數的指針,也可使用聯合數組
  5. 結構定義允許嵌套,結構中也可用聯合作為成員,形成結構和聯合的嵌套。
  6. 鍊表是一種重要的數據結構,它便於實現動態的存儲分配。本章介紹是單向鍊表,還可組成雙向鍊表循環鍊表等。

相關詞條

熱門詞條

聯絡我們