DC 11 結構體,共同體等

2021-08-04 03:36:23 字數 819 閱讀 4222

結構體一般形式:

struct 結構體 ;

共用體:

union  共用體名稱 ;

結構體和共用體的區別在於:結構體的各個成員會占用不同的記憶體,互相之間沒有影響;而共用體的所有成員占用同一段記憶體,修改乙個成員會影響其餘所有成員。

結構體占用的記憶體大於等於所有成員占用的記憶體的總和(成員之間可能會存在縫隙),共用體占用的記憶體等於最長的成員占用的記憶體。共用體使用了記憶體覆蓋技術,同一時刻只能儲存乙個成員的值,如果對新的成員賦值,就會把原來成員的值覆蓋掉。

共用體的所有成員起始位址的是一樣的。

結構體需要注意的問題有:

為了計算機快速訪問記憶體,計算機採用記憶體對齊模式。一次訪問固定的位元組,可有效的防治二次訪問,一般來說,32位的對齊係數為4.

共同體需要注意的問題:

大小端問題。

小端模式就是低位位元組排放在記憶體的低位址端,高位位元組排放在記憶體的高位址端。

大端模式就是高位位元組排放在記憶體的低位址端,低位位元組排放在記憶體的高位址端。

借用共用體位元組占用同樣空間的特性,可用如下方法判斷大小端:

#include // 小端返回真(1),大端返回假(0)

int islittleendian()a;

a.a = 1;

return (a.ch == 1);

}int main()

列舉enum week;

以上三種型別需要注意{}後面有;號。

關鍵字: static  靜態變數

const   定義唯讀變數 

typedef   起別名

結構體,共同體

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

結構體和共同體

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

結構體 共同體 列舉

列舉 列舉型別的定義形式為 enum typename enum是乙個新的關鍵字,專門用來定義列舉型別,這也是它在c語言中的唯一用途 typename是列舉型別的名字 valuename1,valuename2,valuename3,是每個值對應的名字的列表。注意最後的 不能少。例如,列出乙個星期有...