結構體陣列
結構體指標
結構體巢狀結構體
結構體作為函式引數
結構體中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 ...