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

2021-09-18 06:46:38 字數 1293 閱讀 8503

#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 特殊宣告 匿名結構體型...