簡介
結構與聯合
結構類型定義和結構變數說明
在實際問題中,一組數據往往具有不同的
數據類型。例如, 在學生登記表中,姓名應為字元型;學號可為
整型或字元型;年齡應為整型;性別應為字元型;成績可為整型或實型。 顯然不能用一個
數組來存放這一組數據。因為
數組中各元素的類型和長度都必須一致,以便於
編譯系統處理。為了解決這個問題,C語言中給出了另一種構造
數據類型——“結構”。它相當於其它高級語言中的記錄。
“結構”是一種構造類型,它是由若干“成員”組成的。 每一個成員可以是一個基本
數據類型或者又是一個構造類型。 結構既是一種“構造”而成的
數據類型, 那么在說明和使用之前必須先定義它,也就是構造它。如同在說明和調用函式之前要先定義函式一樣。
聯合的用法
union number{
int x;
long y;
double z;
};
number num = (4,15,30.7);
聯合類型的所有成員在同一時刻只能有一個起作用,因此他占用的記憶體空間是所有成員中最大那個的大小。
使用聯合類型時,應該特別注意有效成員是哪個。
小結
結構和聯合是兩種構造類型數據,是用戶定義新
數據類型的重要手段。結構和聯合有很多的相似之處,它們都由成員組成。成員可以具有不同的數據類型。成員的表示方法相同。都可用三種方式作
變數說明。
在結構中,各成員都占有自己的記憶體空間,它們是同時存在的。一個結構
變數的總長度等於所有成員長度之和。在聯合中,所有成員不能同時占用它的記憶體空間,它們不能同時存在。聯合變數的長度等於最長的成員的長度。
“.”是成員運算符,可用它表示成員項,成員還可用“->”運算符來表示。
結構
變數可以作為函式參數,函式也可返回指向結構的指針變數。而聯合
變數不能作為函式參數,函式也不能返回指向聯合的指針變數。但可以使用指向聯合變數的
指針,也可使用聯合
數組。
結構定義允許嵌套,結構中也可用聯合作為成員,形成結構和聯合的嵌套。