#include
#include
#include
//1 結構體
//結構是一些值的集合,這些值稱為結構體成員,結構體的每個成員可以是不同型別的變數
struct stu
;//結構體的自引用
struct node
;//錯誤的,結構體內不能包含結構體自身
struct node
;//正確 指標是四個位元組
//結構體內存對齊
struct test
;int main()
struct test2
;int main()
struct test3
;//12
struct test3
;//8
//結構體對齊原則
//(1)第乙個成員在與結構體變數偏移量為0的位址處
//(2)其他成員變數要對齊到某個數字的整數倍的位址處
// 對齊數=編譯器預設的乙個對齊數與該成員大小的較小值,vs中預設的值為8
//(3)結構體總大小為最大對齊數(每個成員變數都有乙個對齊數)的整數倍
//結構體修改預設對齊數
//對於跨平台的程式來說比較有意義
#pragma pack(1)//修改預設對齊數,對齊數改為1
struct test
;//執行結果為什麼是6
//#pragma pack()//不加引數意味著對齊數恢復預設值
//計算結構體中某變數相對於首位址的偏移
struct test2
;int main()
//結構體傳參
//結構體傳參時要傳結構體的位址
//2 位段
//位段的成員必須是int\unsigned int\signed int
//位段的成員後面有乙個冒號和乙個數字
//a是乙個位段型別 ???
struct a
;//使用位段時應注意跨平台問題
//3 列舉
enum *** //enum ***為一種型別
//4 聯合
//聯合體的成員是共用同一塊記憶體空間
union un
;int main()
dec;
};int main()
//判斷大小端
int islittleend()
return 0;
}//2 用聯合體來計算大小端
union un
;int islittleend()
return 0;
}
自定義型別 結構體 位段 列舉 聯合
1 結構體基礎知識 定義 不同或相同型別元素的集合 宣告 直接上例子會更清楚 成員 可以是變數 陣列 指標甚至其它結構體成員。struct stu 分號不能丟特殊宣告 匿名結構體型別,並不建議省略結構體型別名,知道有這麼回事就好了 struct x 注意 有n個結構體就有n種型別,即使兩個結構體成員...
自定義型別(結構體 位段 列舉和聯合)
結構體常用於資料的大體模板相同,但具體的內容不同。例如 學生的資訊都包括學號,姓名,年齡等資訊,但是每個學生的資訊的內容不同。這時就要用到結構體的建立。1.定義結構體變數 以學生資訊為例 struct stu student 也可以用struct stu student 來定義結構體變數。當然也可以...
自定義型別詳解(結構體,位段,列舉, 聯合)
1.1 結構體宣告 結構體是一些值的集合,這些值稱為成員變數,這些值可以是不同的型別 struct tag variable list include include 結構體是一些值的集合,這些值稱為成員變數,結構的每個成員可以是不同型別的變數。一般宣告 struct stu 特殊宣告 匿名結構體型...