結構體 列舉 typedef

2021-07-22 01:55:54 字數 3632 閱讀 9573

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);

```* 結構體指標

1.宣告格式

*** 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個人.

姓名年齡

出生日期

家產日期:

年 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)如果你要返回結構體變數的位址,那麼就要把這個結構體變數建立在堆區

###列舉變數

1.什麼時候要定義列舉型別?

有乙個變數,要求這個變數 只能取值 幾種情況之一

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;

3>匿名結構體起別名

typedef struct

student;

2,使用typedef為列舉型別取1個短別名

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...