結構體屬於使用者自定義的資料型別,允許使用者儲存不同的資料型別
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...