C語言結構體 列舉 巨集 聯合體

2021-10-24 02:14:15 字數 1062 閱讀 3189

列舉常量與巨集的區別

聯合體和結構體區別

c和c++結構體區別

這篇文章很詳細,值得一看c語言結構體型別的定義和使用

關於結構體對齊問題請閱讀:結構體對齊規則及舉例

系統指定型別的大小與系統有關,這裡取

資料型別

位元組char

1float

4double

8long double

16short int

2int

4long int

8long long int

8(1)按結構體最大成員對齊(32位機下double、long long按照4位元組對齊)

案例一:

struct

a;

結果是8

案例二:

struct

a;

結果是12並非16

(2)結構體巢狀

巢狀的結構體會在先內部完成對齊。

案例一:

structa;

struct

b;

結果是12,而非8

如果是:

案例二:

struct

a;

則是8

(3)每個成員的起始位置必須是當前成員大小的整數倍

例如:

struct

a;

b的偏移是2而非1

(4)在使用預編譯指令指定對齊方式之後,一切聽預編譯指令

#pragma pack(nbytes)可以指定按nbytes位元組對齊。

兩者都可以有多個成員,結構體是多個不同型別變數的組合,其占用的記憶體大小是所有變數大小的總和; 聯合體多個不同型別的變數占用乙份儲存空間,其占用記憶體的大小是聯合體中最大的那個變數的大小。

由於共用乙份儲存空間,所以對聯合體的成員進行修改會順帶改變其他成員,結構體則不會。

結構體 聯合體 列舉

1 結構體struct 結構體的作用 在網路協議 通訊控制 嵌入式系統的c c 程式設計中,我們要傳送的不是簡單的位元組流 char型陣列 二是多種資料組合起來的乙個整體,其表現形式是乙個結構體。使用struct的注意事項 1 下面看乙個題目 結果 6 12 這裡涉及到結構體的記憶體對齊方式。1 關...

結構體 聯合體 列舉

結構體 1.宣告乙個結構體型別的一般形式為 struct 結構體名 成員表列 如 struct student 表示可選項 注 宣告不是定義,故不可對成員列表中的成員進行初始化。定義別名 方法一 如 struct 結構體名 typedef struct 結構體名 別名 方法二 如 typedef s...

C語言 結構體 聯合體 列舉 typedef

2 聯合體 共用體 3.列舉型別 4 typedef define crt secure no warnings include include include include include struct 結構體名 struct student stu intmain0201 struct stu...