Linux C 10 結構體和共用體

2021-08-18 11:52:58 字數 1246 閱讀 5754

在實際生活中,有大量的由不同性質的資料構成的實體,如通訊錄就是由姓名、位址、**號碼等資訊組成。對於這種實體,用陣列是難以描述的,因此,c語言提供了一種被稱為結構體造型資料型別,結構體型別為處理複雜資料型別提供了便利手段。

結構體與陣列類似,都是有若干分量組成的,與陣列不同的是,結構體的分量可以是不同型別,可以通過成員變數名來訪問結構體的元素。

結構體的定義說明了他的組成成員,以及每個成員的資料型別。

struct 結構體名
例如定義乙個結構體student,用他來儲存學生的基礎資訊:

struct student
結構體變數的說明:

struct 結構體名  結構體變數名;
引用結構體成員方法

結構體變數名.成員n
結構體變數賦值:

結構體變數名.成員n=數值
當乙個指標用來指向乙個結構體變數時,稱之為結構體指標變數。結構體指標變數中的值是所指向的結構變數的首位址,通過結構指標即可訪問該結構變數。這與陣列指正和函式指標的情況是相同的。結構體指標變數定義的一般形式為:

struct 結構體型別名 *結構體指標變數名
p=&student1;
通過結構體指標可以實現對結構體變數的賦值操作:

p->name="hps";

p->stunumber="2015122222";

p->calss="遙感1班"

在c語言中,允許幾種不同型別的變數存到到同一段記憶體單元中,也就是使用覆蓋技術,幾個變數互相覆蓋。這種幾個不同的變數共同占用一段記憶體的結構,被稱為共用體型別結構,簡稱共用體。一般定義為:

union 共用體名
只有定義了共用體變數才可以在之後的程式中引用它。不可以直接引用共用體變數,而只能引用共用體變數中的成員。

共用體變數名.成員名
在c語言中,除系統定義的型別和使用者自定義的結構體、共用體等型別外,還可以使用型別說明符typedef定義新的型別來代替已有的型別。typedef語句的一般形式為:

typedef 已知型別名 新的型別名
例如:

typedef int   internet;

共用體和結構體

共用體和結構體的宣告與初始化的格式不同。宣告 struct or union new st 初始化 new st 和陣列一樣,使用逗號分隔,並用花括號括起。也可以全放在一行。可以同時完成定義結構和建立結構變數的工作,只需要將變數名放在結束括號的後面 struct or union new st ne...

結構體和共用體

宣告結構和結構體變數 include include define maxtitl 41 define maxautl 31 define max 100 結構宣告 並未建立實際的資料物件 也稱結構宣告為模板 struct bookbok int main 復合字面常量 bk1 struct boo...

結構體和共用體

通過前面的講解,我們知道結構體 struct 是一種構造型別或複雜型別,它可以包含多個型別不同的成員。在c語言中,還有另外一種和結構體非常類似的語法,叫做共用體 union 它的定義格式為 union 共用體名 共用體有時也被稱為聯合或者聯合體,這也是 union 這個單詞的本意。結構體和共用體的區...