結構體
定義多個不同型別的成員變數組合在一起,以實現複雜的資料結構。
格式: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 下...