C語言 自定義型別 結構體,列舉,聯合

2021-09-26 06:22:46 字數 1352 閱讀 9450

結構

結構是一些值的集合,這些值稱為成員變數。結構的每個成員可以是不同型別的變數。

struct tag

variable-list;//宣告定義後所定義的成員變數

//描述乙個學生

struct student

;

結構體的自引用

//結構正確的自引用方式

struct node

; //2

typedef struct node

node;

結構體內存對齊

對齊規則:

第乙個成員在與結構體變數偏移量為0的位址處。

其他成員變數要對齊到某個數字(對齊數)的整數倍的位址處。

對齊數 = 編譯器預設的乙個對齊數 與 該成員大小的較小值。

vs中預設的值為8 linux中的預設值為4

結構體總大小為最大對齊數(每個成員變數都有乙個對齊數)的整數倍。

如果巢狀了結構體的情況,巢狀的結構體對齊到自己的最大對齊數的整數倍處,結構體的整體大小就是所有最大對齊數(含巢狀結構體的對齊數)的整數倍。

修改預設對齊數

#pragma pack()//取消設定的預設對齊數,還原為預設

#pragma pack(1)//設定預設對齊數為1

//#pragma pack(n)設定預設對齊數為n

列舉型別的定義

enum day//星期

;

{}中的內容是列舉型別的可能取值,也叫 列舉常量 。

這些可能取值都是有值的,預設從0開始,一次遞增1,當然在定義的時候也可以賦初值。

比如上面的 thur=6

列舉的優點

增加**的可讀性和可維護性

和#define定義的識別符號比較列舉有型別檢查,更加嚴謹。

防止了命名汙染(封裝)

便於除錯

使用方便,一次可以定義多個常量

成員共用一塊空間(所以聯合也叫共用體)

//聯合型別的宣告

union un

;//聯合變數的定義

union un un;

聯合大小的計算

union un

;int islittleend()

return 1;

}int islittleend2()

return 1;

}

C語言 自定義型別 結構體 列舉 聯合

二 列舉 三 聯合 1.結構體型別建立 struct stu 定義乙個學生結構體 分號不能丟 特殊的宣告 在宣告結構的時候,可以不完全的宣告 比如 匿名結構體型別 struct x struct a 20 p p x 非法,編譯器會把上面的兩個宣告當成完全不同的兩個型別 結構的不完整宣告 struc...

C語言 自定義型別 結構體,列舉,聯合

結構體的基礎知識 結構是一些值的集合,這些值稱為成員變數。結構的每個成員可以是不同型別的變數。結構體的宣告 例如描述乙個學生 struct stu s s為變數列表 typedef struct stu s,p s,p為型別在宣告結構的時候,可以不完全的宣告。匿名結構體型別 struct x str...

自定義型別 結構體 列舉 聯合

結構體 所謂結構體,就是將一大堆值放在一起,建立乙個新的型別,這些成員可以是不同型別的變數。struct tag variable list tag 要求 1.見名知意 2.可以省略 3.不建議省略 member list c語言中,不能為空 variable list 變數列表,可以省略,建議省略...