C 學習歷程 結構體

2021-09-28 19:38:58 字數 4199 閱讀 8220

結構體屬於使用者自定義的資料型別,允許使用者儲存不同的資料型別

1.結構體定義和使用

語法:struct 結構體名 ;

通過結構體建立變數的方式有三種:

示例:

//結構體定義

struct student

stu3;

//結構體變數建立方式3

intmain()

; cout <<

"姓名:"

<< stu2.name <<

" 年齡:"

<< stu2.age <<

" 分數:"

<< stu2.score << endl;

stu3.name =

"王五"

; stu3.age =18;

stu3.score =80;

cout <<

"姓名:"

<< stu3.name <<

" 年齡:"

<< stu3.age <<

" 分數:"

<< stu3.score << endl;

system

("pause");

return0;

}

總結1:定義結構體時的關鍵字是struct,不可省略

總結2:建立結構體變數時,關鍵字struct可以省略

總結3:結構體變數利用操作符 『』.』』 訪問成員

2. 結構體陣列

**作用:**將自定義的結構體放入到陣列中方便維護

語法:struct 結構體名 陣列名[元素個數] = , {} , ... {} }

示例:

//結構體定義

struct student

intmain()

,,};

for(

int i =

0; i <

3; i++

)system

("pause");

return0;

}

3.結構體指標

**作用:**通過指標訪問結構體中的成員

示例:

//結構體定義

struct student

;int

main()

;struct student * p =

&stu;

p->score =80;

//指標通過 -> 操作符可以訪問成員

cout <<

"姓名:"

<< p->name <<

" 年齡:"

<< p->age <<

" 分數:"

<< p->score << endl;

system

("pause");

return0;

}

總結:結構體指標可以通過 -> 操作符 來訪問結構體中的成員

4.結構體巢狀結構體

作用:結構體中的成員可以是另乙個結構體

**例如:**每個老師輔導乙個學員,乙個老師的結構體中,記錄乙個學生的結構體

示例:

//學生結構體定義

struct student

;//教師結構體定義

struct teacher

;int

main()

總結:在結構體中可以定義另乙個結構體作為成員,用來解決實際問題

5.結構體做函式引數

**作用:**將結構體作為引數向函式中傳遞

傳遞方式有兩種:

示例:

//學生結構體定義

struct student

;//值傳遞

void

printstudent

(student stu )

//位址傳遞

void

printstudent2

(student *stu)

intmain()

;//值傳遞

printstudent

(stu)

; cout <<

"主函式中 姓名:"

<< stu.name <<

" 年齡: "

<< stu.age <<

" 分數:"

<< stu.score << endl;

cout << endl;

//位址傳遞

printstudent2

(&stu)

; cout <<

"主函式中 姓名:"

<< stu.name <<

" 年齡: "

<< stu.age <<

" 分數:"

<< stu.score << endl;

system

("pause");

return0;

}

6.結構體中 const使用場景

**作用:**用const來防止誤操作

示例:

//學生結構體定義

struct student

;//const使用場景

void

printstudent

(const student *stu)

//加const防止函式體中的誤操作

intmain()

;printstudent

(&stu)

;system

("pause");

return0;

}

7.結構體案例

案例描述:

學校正在做畢設專案,每名老師帶領5個學生,總共有3名老師,需求如下

設計學生和老師的結構體,其中在老師的結構體中,有老師姓名和乙個存放5名學生的陣列作為成員

學生的成員有姓名、考試分數,建立陣列存放3名老師,通過函式給每個老師及所帶的學生賦值

最終列印出老師資料以及老師所帶的學生資料。

示例:

struct student

;struct teacher

;void

allocatespace

(teacher tarray,

int len)}}

void

printteachers

(teacher tarray,

int len)}}

intmain()

案例2

案例描述:

設計乙個英雄的結構體,包括成員姓名,年齡,性別;建立結構體陣列,陣列中存放5名英雄。

通過氣泡排序的演算法,將陣列中的英雄按照年齡進行公升序排序,最終列印排序後的結果。

五名英雄資訊如下:

,

, ,

, ,

示例:

//英雄結構體

struct hero

;//氣泡排序

void

bubblesort

(hero arr,

int len)}}

}//列印陣列

void

printheros

(hero arr,

int len)

}int

main()

,,,,

,};int len =

sizeof

(arr)

/sizeof

(hero)

;//獲取陣列元素個數

bubblesort

(arr, len)

;//排序

printheros

(arr, len)

;//列印

system

("pause");

return0;

}

C 學習歷程7 結構體

struct student stu3 結構體變數建立方式3 struct student stu1 struct 關鍵字可以省略 建立方式 stu1.name 張三 stu1.age 18 stu1.score 100 1struct student stu2 建立方式2struct 結構體名 陣...

C 學習 結構體

結構體定義的格式如下 struct 結構體型別名 例如,我用乙個結構體儲存學生的資訊 struct studentt 欄位名可以和程式中的變數名相同,不同結構體內的欄位名也可以相同。結構體的成員型別可以是任意型別,可以是整型,浮點型,陣列,也可以是其他的結構體型別 不能是自己,但可以是指向自己這一結...

c 結構體轉為string c 結構體學習

宣告及使用 include int main struct user printf user size is lu sizeof struct user user size is 8 struct stu jack printf jack size is lu sizeof jack jack si...