1.結構體 關鍵字 struct定義乙個結構體型別 .點運算子 ->箭頭運算子
陣列 存放一組相同型別的資料
存放一組不同型別的資料 結構體型別
存放乙個學生的資訊 學號 姓名
1取別名 給結構體型別取乙個更短的名字 方便使用struct student //
結構體型別 存放什麼型別的資料2;
89void myfun(struct
student stu1)
1014
void myfun2(struct student *p)
1524
void test()//
結構體25
;
3435 printf("
id是%d\n
", beiwang.id);//
結構體成員使用方式 結構體變數.成員
36 printf("
名字是%s\n
", beiwang.name);
3738
struct student arr[10
];39
for (int i = 0; i < 10; ++i)
4044
struct student *p;
45 p = (struct student *)malloc(sizeof(struct student) * 10
);46
47 p[0
].name;
4849
free
(p);50}
51void
test2()
52
typedef 型別 別名
typedef int myint ;使用別名和使用型別是一致的
1 typedef struct student st; //作用 型別名字太長 取乙個短的名字方便st作為結構體型別的別名
2 typedef struct student* pst;//
pst 結構體指標型別的別名
34 typedef struct
teacher
5te, *pte; //
定義型別的時候取別名9//
te 相當於結構體型別
10//
pte 結構體指標型別的別名
1112
13 typedef int myint;
取一些別名有助於提高**的可讀性
結構體大小 結構體對齊
結構體大小 >= 結構體所有成員大小之和
這個str的結構體所占用的空間為32
存在對齊操作的目的 取成員的時候 提高效率 通過浪費空間來提高執行效率
比較小的成員放到前面 減少記憶體對齊浪費的空間
2.聯合 union
共用體共同使用乙個空間 存放一般同時只能存放乙個資料
1 union testnum //聯合大小 >= 聯合最大成員大小之和聯合型別定義方式
2;
1 printf("3.列舉聯合大小 %d\n
", sizeof
(union testnum));
2union testnum num;
3 num.y = 3.14f
;4 printf("
%x", num.x);
switch 分支
case
把型別的值 全部列舉出來 方向 上下左右四個方向
enum 列舉的關鍵字
1列舉這個型別所有可能的值enum
dir2; 5
enum
week6;
910void
test4()
1128 }
這些常量可以手動設定他們的值
常量有名字 提高**的可讀性
在定義的時候 沒有給他設定初值 那麼預設從0開始 後乙個是前乙個加1
1 #include2 #include3 #include45整體**struct student //
結構體型別 存放什麼型別的資料6;
1213 typedef struct student st; //
st作為結構體型別的別名
14 typedef struct student* pst;//
pst 結構體指標型別的別名
1516
//---> student 完整的型別 strcut student
1718
void myfun(struct
student stu1)
1923
void myfun2(struct student *p)
2433
void test()//
結構體34
;
4344 printf("
id是%d\n
", beiwang.id);//
結構體成員使用方式 結構體變數.成員
45 printf("
名字是%s\n
", beiwang.name);
4647
struct student arr[10
];48
for (int i = 0; i < 10; ++i)
4953
struct student *p;
54 p = (struct student *)malloc(sizeof(struct student) * 10
);55
56 p[0
].name;
5758
free
(p);59}
6061 typedef struct
teacher
62te, *pte; //
定義型別的時候取別名
66//
te 相當於結構體型別
67//
pte 結構體指標型別的別名
6869
70 typedef int
myint;
7172
void
test2()
7378
79struct
str80;86
87 union testnum //
聯合型別定義方式88;
9394
void fun(int da[20]) //
int (*da)[20]
95102
}103
}104
105106
107//
列舉108
enum
dir109
; //
有名字的常量 可以放到switch的case後面
112//
這些常量可以手動設定值
113//
常量有名字 提高**的可讀性
114//
在定義的時候 沒有給他設定初值 那麼預設從0開始賦值 後乙個是前乙個加1
115116
enum
week
117;
120121
void
test4()
122139
}140
141142
143int
main()
144
結構體,列舉,聯合
結構體 1.結構體的建立 1 在構建結構體之前,必須要對結構體進行宣告。例 struct student 描述乙個學生,student為標籤 此處的分號不能丟,此處也可寫變數 2 成員訪問 2.1在 1 中的 struct student 相當於型別,比如 int型,struct student s...
結構體 聯合 列舉
一般的,在宣告乙個結構提示要使用struct關鍵字,例如 建立乙個學生 struct stu char name 20 名字 int age 年齡 char 5 性別 char id 20 學號 分號不能丟結構體得特殊宣告 沒有結構體名 structx 沒有結構體的標籤,就不能在結構體建立完成之後再...
結構體,列舉,聯合。
今天我們來學習一下結構體,列舉以及聯合等知識。一。首先從結構體開始,結構體與陣列一樣都是聚合型別。1.結構體的宣告 struct tag variable list tag 1 可以省略 2 見名思意 3 盡量不省略。member list 不能為空。variable list 可以省略。例如 描述...