C 基礎入門 8 結構體

2021-10-10 17:09:08 字數 3819 閱讀 9405

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

語法:struct 結構體名 ;

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

示例:

//結構體定義

struct student

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

int main() ;

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

return 0;

}

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

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

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

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

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

示例:

//結構體定義

struct student

int main() ,

, }; for (int i = 0; i < 3; i++)

system("pause");

return 0;

}

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

示例:

//結構體定義

struct student

;int main() ;

struct student * p = &stu;

p->score = 80; //指標通過 -> 操作符可以訪問成員

cout << "姓名:" << p->name << " 年齡:" << p->age << " 分數:" << p->score << endl;

system("pause");

return 0;

}

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

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

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

示例:

//學生結構體定義

struct student

;//教師結構體定義

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

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

傳遞方式有兩種:

示例:

//學生結構體定義

struct student

;//值傳遞

void printstudent(student stu )

//位址傳遞

void printstudent2(student *stu)

int main() ;

//值傳遞

printstudent(stu);

cout << "主函式中 姓名:" << stu.name << " 年齡: " << stu.age << " 分數:" << stu.score << endl;

cout << endl;

//位址傳遞

printstudent2(&stu);

cout << "主函式中 姓名:" << stu.name << " 年齡: " << stu.age << " 分數:" << stu.score << endl;

system("pause");

return 0;

}

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

示例:

//學生結構體定義

struct student

;//const使用場景

void printstudent(const student *stu) //加const防止函式體中的誤操作

int main() ;

printstudent(&stu);

system("pause");

return 0;

}

8.8.1 案例1

案例描述:

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

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

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

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

示例:

struct student

;struct teacher

;void allocatespace(teacher tarray , int len) }}

void printteachers(teacher tarray, int len) }}

int main()

8.8.2 案例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");

return 0;

}

C 基礎入門 08結構體

結構體屬於使用者自定義的資料型別,允許使用者儲存不同的資料型別 語法 struct 結構體名 通過結構體建立變數的方式有三種 示例 結構體定義 struct student stu3 結構體變數建立方式3 int main cout 姓名 stu2.name 年齡 stu2.age 分數 stu2....

C基礎 結構體

c語言,結構體語法 1.定義結構體型別 struct 結構體名稱 例 struct date int year int month int day 2.結構體在記憶體中 例一 struct student char name 指標佔8個位元組 int no int佔4個位元組 int age int...

c 基礎入門 8

檔案操作 ofstream ofs ofs.open test.txt ios out ofs 姓名 張三 close ifstream ifs ifs.open test.txt ios in if ifs.is open 第一種讀取方式 char buf 1024 初始化全為0 while if...