|
結 構 (Structure) 通常一個簡單之變數或陣列不足以用來儲存複雜之記錄。C語言中有結構體之架構,允許使用者宣告資料實體將不同形式之元素儲存一起。事實上,結構是一種是一種由使用者自訂之資料型態。
<1> 在C語言中,結構的宣告方式如下 :
struct 結構名稱標籤 { 資料型態 資料變數元素1; 資料型態 資料變數元素2; •••••••• }; For example struct Personal {char Name; int Hour; int Minute;} <2> 結構被宣告後即可定義任何變數。 由上述宣告的例子來說明 , Personal 為 此結構之名稱 ,又稱為標籤 ( tag ) , 而在{ } ( 括 號 ) 內的敘述則是personal 這個結構的成員 , Name 為 Personal 這個結構的變數名稱 。最後在結構宣告結束時須加一 ; (分號) 表示。 <3> 結構的成員其資料型態可以使用 int, float 及 char。也可用陣列與指標變數。 <4> 結構的宣告與使用亦分為內,外部 。所謂內部宣告即表示結構的宣告在程式的 { } ( 括 號 ) 內完成 , 反之 , 如果結構的宣告在程式的 { } ( 括號 ) 外完成稱外部宣告。 l 結 構 的 使 用
上例中結構變數taipei 的宣告, 當結構變數 taipei 宣告完成後即表示其成員包含 下列六項 :
taipei.id ( 或 taipei->id )
taipei.name ( 或 taipei->name ) taipei.age ( 或 taipei->age ) taipei.sex ( 或 taipei->sex ) taipei.address ( 或 taipei->address ) taipei.tel ( 或 taipei->tel ) 執 行 結 果 : Please input your id : 007 Please input your name : Mike Please input your address : Taipei Please input your telephone number : 12345678 Please input your sex ( M or F ) : M Please input your age : 29 ••••••••••
Your telephone number : 12345678 l 指標與結構: 鏈結串列 (Linked List) 鏈結串列乃是以指標指向相關之結構。
執 行 結 果 : p.s.
(.) 運算子將結構與結構成員連結 (->) 運算子將指標與結構成員連結 l 聯集 (Union)<1> 聯集之形式與結構非常類似。在C語言中, 聯集之宣告方式如下 :
union 聯集名稱標籤 { 資料型態 資料變數元素1; 資料型態 資料變數元素2; •••••••• };
Example: union unit { char ch; int num; float fl; } object;
|
object.ch = ‘a’;object.num = 100;object.fl = 3.41; | <2> 聯集與結構之不同處在於聯集所佔之空間為所有成員中最大物件擁有之空間。也就是說,聯集中所有成員,再同一瞬間,僅能有一種型態存在。上例中,聯集object不可能擁有字元 ’a’ 與整數100; 它僅佔有4 個 Bytes ,因為成員中float型態所佔有空間最大。
|
|