結構體和共同體

2022-09-05 22:03:33 字數 860 閱讀 1196

結構體

定義多個不同型別的成員變數組合在一起,以實現複雜的資料結構。

格式:struct [標籤名]  [ 變數1=,  變數2 ...];

或者:typedef struct [標籤名];

示例:struct books book;

當兩個結構體互相包含,則需要對其中乙個結構體進行宣告:

//宣告

struct b; 

//結構體a指向結構體b

struct a;

struct b;

位域有些資訊在儲存時,並不需要占用乙個完整資料空間,而只需佔幾個或乙個二進位制位。所謂"位域"是把位元組中的二進位劃分為幾個不同的區域,並說明每個區域的位數。

格式:整型  變數名 : 寬度

struct code;

值得注意的是寬度表示是的所佔二進位制位,不能超過它自身的型別。

如: char 佔1個位元組,也就是8位,所以寬度不能超過8,即: char a:9 會報錯。

如: int 佔4個位元組,也就是32位,所以寬度不能超過32,即: int a:33 會報錯。

整個結構體所佔記憶體大小是最大的那資料型別的整數倍.

共計 32 + 8 = 40 / 8 = 5位元組,而成員變數中占用空間最大的是int型,乙個int佔4個位元組,而4個位元組存不下,得再擴充套件乙個int空間,所以就佔8個位元組了。可以通過 sizeof(變數) 去驗證結果;

共用體定義多個不同型別的成員變數共用相同的記憶體空間,而記憶體空間只能輪流使用,記憶體空間大小取決於最大的那個成員變數。

union [標籤名] [變數1, 變數2 ...];

示例:

union student  boy;  

intmain( )

結構體和共同體

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

結構體,共同體

共用體 構造資料型別,也叫聯合體 用途 使幾個不同型別的變數共佔一段記憶體 相互覆蓋 結構體是一種構造資料型別 用途 把不同型別的資料組合成乙個整體 自定義資料型別 結構體變數所佔記憶體長度是各成員佔的記憶體長度的總和。共同體變數所佔記憶體長度是各最長的成員佔的記憶體長度。共同體每次只能存放哪個的一...

C 結構體和共同體

一 定義結構體三種方法 1.先宣告結構體型別再定義變數名。2.在宣告型別的同時定義變數。3.直接定義結構體型別變數。struct student 二 共同體 引用方式 只有先定義了共同體的變數才能引用它。而且不能引用共同體變數,只能引用共同體變數中的成員 union teacherteacher 下...