C 學習之結構體

2021-10-07 22:39:24 字數 3554 閱讀 1246

結構體陣列

結構體指標

結構體巢狀結構體

結構體作為函式引數

結構體中const的使用

結構體案例

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

語法:struct 結構體名

​ 結構體成員列表;

}; // 注意最後有個分號

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

struct 結構體名 變數名

struct 結構體名 變數名 =

定義結構體時順便建立變數

例1:

#include using namespace std;

struct student

;int main()

定義結構體時struct關鍵字不能省略, 建立結構體變數的時候可以省略

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

例1:struct 結構體名 變數名

#include using namespace std;

struct student

;// 第三種方式建立結構體定義

struct teacher

s3;int main() ;

cout << "姓名:" << s2.name << " 性別:" << s2.gender << " 年齡:" << s2.age << " 分數:" << s2.score << endl;

// 第三種方式建立結構體

s3.name = "王五";

s3.age = 21;

s3.gender = "男";

cout << "姓名:" << s3.name << " 性別:" << s3.gender << " 年齡:" << s3.age << endl;

system("pause");

return 0;

}

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

語法:struct 結構體名 資料名[元素個數] = , {}, {}, …}

#include using namespace std;

struct student

;int main() ,

, }; // 修改結構體中的陣列

stuarry[2].name = "趙六";

stuarry[2].age = 30;

stuarry[2].score = 65;

// 遍歷結構體陣列

for (int i = 0; i < sizeof(stuarry) / sizeof(stuarry[0]); i++)

system("pause");

return 0;

}

我們可以通過指標訪問結構體中的成員

語法:利用操作符->可以通過結構體指標訪問結構體屬性

例1:

#include using namespace std;

struct student

;int main() ;

struct student* p = &s1; // 定義結構體型別的指標p

cout

<< "姓名:" << p->name // 用->取值

<< " 年齡:" << p->age

<< " 分數:" << p->score

<< endl;

system("pause");

return 0;

}

結構體重的成員可以是另乙個結構體

例1:每個老師輔導乙個學生,乙個老師的結構體中,記錄乙個學生的結構體。

#include using namespace std;

struct student

;struct teacher

;int main()

將結構體作為引數項函式中傳遞

傳遞方式有兩種:

值傳遞引用傳遞(位址傳遞)

例1:

#include using namespace std;

struct student

;void printstudent1(struct student s)

void printstudent2(struct student * p)

int main()

用來防止修改資料產生誤操作

例1:

#include using namespace std;

struct student

;void printstudent(const struct student* p) // 使用const修飾,使得無法修改

int main()

案例描述:

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

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

學生的成員有姓名、考試分數

建立陣列存放3名老師,通過函式給每個老師及所帶學生賦值,最終列印出老師資料以及老師所帶學生資料

例1:

#include using namespace std;

#include // 學生的結構體

struct student

;// 老師的結構體

struct teacher

;// 給老師陣列賦值

void allocatespace(struct teacher tarry, int len) }}

void printinfo(struct teacher tarry, int len) }}

int main()

案例描述:

設計乙個人物的結構體,包括成員姓名,年齡,性別;建立結構體陣列,陣列中存放5個人物,通過氣泡排序的演算法,將陣列中的英雄按年齡進行公升序排序,最終列印排序後的結果。

五名人物如下:

,,,

,

例2:

#include using namespace std;

struct person

;// 氣泡排序

void bubblesort(struct person per, int len)

} }}// 列印結構體陣列資訊

void printinfo(struct person per, int len)

}int main() ,

, ,

, }; int perlen = sizeof(per) / sizeof(per[0]);

cout << "氣泡排序前:" << endl;

printinfo(per, perlen);

bubblesort(per, perlen); // 氣泡排序

cout << "氣泡排序後:" << endl;

printinfo(per, perlen);

system("pause");

return 0;

}

C學習之結構體

結構體 struct 結構體是由基本資料型別構成的 並用乙個識別符號來命名的各種變數的組合,結構體中可以使用不同的資料型別。1.結構體說明和結構體變數定義 在turbo c中,結構體也是一種資料型別,可以使用結構體變數,因此,像其它 型別的變數一樣,在使用結構體變數時要先對其定義。定義結構體變數的一...

c 之結構體

結構是使用 struct 關鍵字定義的,與類相似,都表示可以包含資料成員和函式成員的資料結構。一般情況下,我們很少使用結構,而且很多人也並不建議使用結構,但作為.net framework 一般型別系統中的乙個基本架構,還是有必要了解一下的。結構的特徵 結構是一種值型別,並且不需要堆分配。結構的例項...

C 之結構體

structtype.cpp 定義控制台應用程式的入口點。include stdafx.h include using namespace std struct student int main student p stu 定義乙個指向結構體student的指標 cout stu.num endl ...