一、結構體型別建立
1)結構的宣告
struct tag
variable-list;
eg:描述乙個學生
struct stu
; //此處有分號
2)特殊的宣告
匿名結構體型別:在宣告的時候省略了結構體標籤tag
struct
x;struct
a[20],*p;
結構體內存對齊
規則:1.第乙個成員在與結構體變數偏移量為0的位址處
2.其他成員變數要對齊到某個數字(對齊數)的整數倍的位址處
對齊數=編譯器預設的乙個對齊數與該成員大小的較小值
(vs中預設的值為8
(linux中預設的值為4
3.結構體總大小為最大對齊數(每個成員變數都有乙個對齊數)的整數倍。
4.如果巢狀了結構體的情況,巢狀的結構體對齊到自己的最大對齊數的整數倍,結構體的整體大小就是所有最大對齊數(含巢狀結構體的對齊數)的整數倍。
列舉+聯合
列舉是乙個被命名的整型常數的集合,本質還是整型;
內部成員第乙個預設值是0,後邊依次+1;
例如enum a
enum ahalf;
}num;
num.i=0x4241; /聯合成員賦值/
printf("%c%c\n", num.half.first, num.half.second);
num.half.first=『a』; /聯合中結構成員賦值/
num.half.second=『b』;
printf("%x\n", num.i);
輸出結果為:
ab6261
自定義型別
typedef型別 typedef 已有型別 新建型別 示例 typedef double area,volume typedef int number number i1 area a enum enum 列舉型別名 enum week 預設sun 0,可以比較 如果修改必須形如enum week...
自定義型別
下面列舉幾種c語言中常用的自定義資料型別 1.結構體型別 當描述乙個整型變數時,可以用int,描述字元型變數時,可以用char,但要描述乙個學生時,因為這個學生包含的資訊很多,比如姓名,性別,年齡等,不能通過單一的型別來描述,所以,這裡引入結構體型別,將某個事物的共有屬性集合在一起,宣告乙個結構體型...
自定義型別
列舉從字面意思理解就是將可能取的值一一枚舉出來,列舉型別沒有成員 可言,裡邊存放的是可能取值。列舉型別的定義 enum day enum color printf d n red printf d n green printf d n blue 執行結果 day和color都是定義的列舉型別,中的內...