C結構體學習
阿新 • • 發佈:2018-11-12
目錄:
C結構體學習
- 學習目標:
- 結構體的概念及用途
- 結構體型別的宣告及其字長
- 結構體變數的定義,訪問和賦值
- 結構體陣列和結構體指標的使用
初識結構體
宣告結構體型別
-
格式:
struct 結構體名{ 資料型別1 結構體成員1: 資料型別2 結構體成員2: 資料型別3 結構體成員3: ... }
-
支援的資料型別
-
內建型別
- char
- short
- int
- float
- double
-
自定義型別
- struct結構體
- union聯合體
- enum列舉型別
-
-
for example:
struct person_infor{ char name[SIZE_IN]; /*姓名*/ int age; /*年齡*/ char gender; /*性別*/ char profession[SIZE_IN]; /*職業*/ char address[SIZE_IN]; /*地址*/ char telephone[SIZE_IN]; /*電話*/ }
定義結構體變數
-
宣告結構體型別,並定義結構體變數
struct persion_infor{ char name[SIZE_IN]; int age; char gender; ... } struct persion_infor Raul,Philip; struct persion_infor Joe;
-
不宣告結構體型別,直接定義結構體變數
struct{ char name[SIZE_IN]; int age; char gender; ... } Raul,Philip,Joe;
-
使用typedef得到簡化的結構體型別名,再定義結構體變數
typede struct persion_infor{ char name[SIZE_IN]; int age; char gender; ... } infor; infor Raul,Phliip;
補充下 typedel用法:
typedef oldType new Type; typedef char myChar; myChar s="hello world"; typedel struct{} infor; // 原型別 新型別 infor student_infor; //宣告變數
結構體的儲存形式
- 結構體的本質
- 就是物理連續的線性資料結構
- 優化:
- 為了方便定址,一般以其本身資料型別的位元組長度為基本單位對齊。(類似mysql的char)
- 分配策略可以調整,通過使用#pragma pack 預處理命令來改變對齊規則(後面在瞭解下)
- 示例:
#