1.宣告格式1.結構體陣列的宣告
struct 結構體名字 陣列名[陣列長度];
struct student students[5];
2.結構體陣列的初始化:(賦值)
1>靜態初始化:定義的同時賦值
struct student students = ,,,
{},{}
};2>動態初始化:先定義後初始化
struct student students[5];
//只有一種方式:挨個賦值
students[0] = {};
students[1] = {};
3.結構體陣列的長度計算:(長度:陣列中的元素的個數)
sizeof(陣列名)/sizeof(元素的資料型別);
sizeof(students)/sizeof(struct student);
```* 結構體指標
*** aa;
**** p_aa = &aa;
struct 結構體名字 變數名;
struct 結構體名字 * p_aaa = &變數名;
2.怎麼給結構體指標賦值
struct 結構體名字 * p_aa;
p_aa = & 結構體變數名;
3.結構體指標怎麼使用?**
struct student
;//結構體型別
//定義了乙個結構體變數
struct student xiaoming;
//定義了乙個結構體指標
struct student * p_xiaoming = &xiaoming;
如何通過結構體指標 給結構體變數賦值
1>
(*p_xiaoming).name = 「小明」;
(*p_xiaoming).age = 18;
注意:陣列名是乙個位址,首元素的位址2>指標可以直接訪問成員變數
p_xiaoming->name = "小紅";
p_xiaoming->age = 18;
函式名是乙個位址,函式在記憶體中的首位址
結構體變數名,不是乙個位址,要獲取結構體變數的位址 &結構體變數名
「小練習:
定義乙個 dog 型別, 年齡 顏色
struct dog;
定義乙個結構體指標,指向乙個狗的變數,並且賦值
struct dog wangcai;
//結構體指標 指向了 wangcai這個結構體
struct dog * p_wangcai = &wangcai;
//通過結構體指標 給 結構體的成員變數賦值
p_wangcai->age = 200;
p_wangcai->color = 「土豪金」;
「` * 結構體巢狀
1.什麼時候要定義列舉型別?1,用1個變數來儲存1個人.
姓名年齡
出生日期
家產日期:
年 int
月 int
日 int
struct date
;struct person
;2."練習
// 乙個學生,有姓名,學號,3門課程(語文,數學,英語),每門課程都有課程名稱和分數
//學生:姓名,學號,三門課程
//每一門課程:課程名稱 ,分數
//課程的結構體
struct kecheng;
//學生的結構體
struct student;
//試一下給 小明結構體變數賦值
struct student xiaoming;
xiaoming.name = "小明";
xiaoming.sno = 10086;
xiaoming.kechengs[0] = (struct kecheng);
xiaoming.kechengs[1] = (struct kecheng);
xiaoming.kechengs[2] = (struct kecheng);
//printf("名字是%s,學號是%d,%s的成績是%d",xiaoming.name,xiaoming.sno,xiaoming.kechengs[0].kename,xiaoming.kechengs[0].score);
```* 結構體與函式
1.結構體作為函式的引數
(1)結構體作為引數傳值是值傳遞
(2)如果你就是希望函式的內部可以修改實參結構體變數的值,那麼就要使用指標
2.結構體作為函式的返回值
(1)在返回的時候,直接將這個結構體變數的值返回即可
(2)如果你要返回結構體變數的位址,那麼就要把這個結構體變數建立在堆區
###列舉變數
有乙個變數,要求這個變數 只能取值 幾種情況之一
2.如何建立乙個列舉型別
enum 列舉名字;3.宣告列舉型別的變數
//蘋果官方 關於c中的列舉的命名規範,以k開頭 後面的單詞首個字母大寫
//oc中的列舉,以相應的列舉名開頭
enum ***;
enum *** s1;//s1就是乙個列舉變數
4.列舉變數的初始化
enum *** s2 = kman;
1.列舉的作用域
全域性列舉
區域性列舉
建議:一般寫在檔案的最上面,好讓所有的函式可以訪問
2.每1個列舉值/列舉項 都有1個對應的整型的數.
預設是從0開始,往後一次遞增1
3.能不能直接為列舉變數賦值1個整型的資料.
可以,但是人類看不懂,所以不建議這麼寫
4.還可以手動指定,每乙個列舉值對應的整型資料
enum direction
;1.定義列舉型別的時候
列舉妹名字 首個字母大寫,如果由多個單詞組成,那麼每乙個單詞的首個字母都大寫
2.列舉值/列舉項的命名
一般都是k開頭
也可以是 列舉名字開頭
enum wx;
「`「`
1. 使用typedef為結構體型別取別名.(常用)
1>先宣告,後起別名
struct student
; typedef struct student student;
2>宣告的同時起別名
typedef struct _student
student;
2,使用typedef為列舉型別取1個短別名3>匿名結構體起別名
typedef struct
student;
1>先宣告,後起別名
enum direction
;typedef enum direction direction;
2>宣告的同時起別名
typedef enum _direction
direction;
3>匿名列舉起別名
typedef enum
direction;
```
結構體,共用體,列舉體,typedef
概念 結構體時一種構造資料型別 用途 把不同型別的資料組合成乙個整體 記憶體 各成員所佔記憶體空間的累加 一.結構體的宣告與定義變數的方法一共有三種 1.常規定義 struct aa 注意大括號後面有分號 變數定義 struct 機構體名 結構體變數名錶 如 struct aa aa,bb 前面的s...
共用體,列舉體和typedef
共用體變數定義 union 共用體名 變數表列 特點 1.同乙個記憶體段可以用來存放幾種不同型別的成員 但在每一瞬間只能存放其中一種,而不是同時存放幾種。共用體變數中起作用的是最後一次存放的成員。共用體變數的位址和它各個成員的位址都是同一位址。2.不能對共用體變數名賦值,不能引用變數名來得到乙個值,...
C語言 結構體 聯合體 列舉 typedef
2 聯合體 共用體 3.列舉型別 4 typedef define crt secure no warnings include include include include include struct 結構體名 struct student stu intmain0201 struct stu...