【筆記】【C語言】第九章 使用者自己建立資料型別
阿新 • • 發佈:2022-05-16
9.1 定義和使用結構體變數
9.2 使用結構體陣列
9.3 結構體指標
9.4 用指標處理連結串列
9.5 共用體型別
9.6 使用列舉型別
9.7 用typedef宣告新型別名
9.1 定義和使用結構體變數
(1)
結構體:使用者自己建立的,由不同型別資料組成的組合型的,資料結構。
結構體是派生的資料型別,使用其他型別的物件來構造結構體。
(2)宣告:
建立結構體型別,其中並無具體資料,系統也不對他分配儲存空間。
strcut 結構體名
{
成員列表
};
示例:
strcut Student { int num; char name[20];View Codechar sex; int age; float score; char address[30]; };
(3)定義:
先宣告結構體型別,再定義該型別變數。
struct node a,b;
(4)初始化:
①給全員賦初值:
struct node { int num; char name[20]; struct date { int year,month,day; }birthday; float score; }student = { 101, "WH" ,1982,5,21,80 };
②部分成員賦初值
}student = { 101, "WH" };
(5)引用:
結構體成員運算子:.
結構體指標運算子:->
student.name student -> name //等價於 (*student).name
(6)注意事項:
- 一個結構體的成員,可以屬於另一個結構體型別。
- 也可以不指定結構體名,而直接定義結構體型別變數。
- 一般形式為: struct {成員列表} 變數名列表;
- 結構體型別 ≠ 結構體變數
- 只能對變數賦值、存取和運算,不能對型別。
- 型別不分配空間,只對變數分配空間。
- 結構體型別中的成員名,可以與程式中的變數名相同,但二者代表的物件不同。
- 域:結構體變數中的成員。
9.2 使用結構體陣列
(1)一般形式:
struct 結構體名 { 成員列表 } 陣列名[陣列長度]; 結構體型別 陣列名[陣列長度];
9.3 結構體指標
(1)為了方便和直觀,C中允許將(*p).num 用 p->num來替代
struct node { int num; }; struct node student; struct node *p; //以下三個表示式相同 student.num (*p).num p -> num
(2)用 結構體變數 和 結構體變數的指標 作函式引數
作用:將一個結構體變數的值 傳遞給 另一個函式。
方法:
- 用 結構體變數 的成員 作引數。
- 用 結構體變數 作實參。 //比較佔空間
- 用 指向結構體變數的指標 作實參。
(3)例如:
#include<stdio.h> struct node { int num; char name[20]; float score[3]; float ave; }; int main { void input( struct node stu[] ); struct node max( struct node stu[] ); void print( struct node stu[] ); struct node stu[3]; struct node *p = stu; input(p); print(max(p)); return 0; }
9.4 用指標處理連結串列
9.5 共用體型別
9.6 使用列舉型別
9.7 用typedef宣告新型別名