1.结构体的创建
#include<iostream> using namespace std; struct student { string name; int age; int scores; }; int main() { struct student stu; //struct student stu1 = { "laozhichi",18,100 }; stu.name = "leizhou"; cout << stu.name << endl; system("pause"); return 0; }
2.结构体数组
#include<iostream> using namespace std; struct student { string name; int age; string address; }; int main() { struct student arr[3] = { {"laozhichi",19,"leizhou"}, {"laozhicaho",21,"leizhou"}, {"laozhilei",25,"leizhou"} }; for (int i = 0; i < 3; i++) { cout << "name is" << arr[i].name <<"age is" << arr[i].age <<"address is" << arr[i].address << endl; } return 0; }
3.结构体指针
#include<iostream> using namespace std; struct student { string name; int age; int scores; }; int main() { struct student stu; struct student *p=&stu; p->name = "laozhichi"; p->age = 18; p->scores = 100; cout << stu.name <<" "<< stu.age <<" " <<stu.scores << endl; system("pause"); return 0; } struct student arr[3] = { {"laozhichi",19,"leizhou"}, {"laozhicaho",21,"leizhou"}, {"laozhilei",25,"leizhou"} }; struct student* p = &arr[0]; p->age = 220;
4.结构体嵌套使用
//学生结构体定义 struct student { //成员列表 string name; //姓名 int age; //年龄 int score; //分数 }; //教师结构体定义 struct teacher { //成员列表 int id; //职工编号 string name; //教师姓名 int age; //教师年龄 struct student stu; //子结构体 学生 }; int main() { struct teacher t1; t1.id = 10000; t1.name = "老王"; t1.age = 40; t1.stu.name = "张三"; t1.stu.age = 18; t1.stu.score = 100; cout << "教师 职工编号: " << t1.id << " 姓名: " << t1.name << " 年龄: " << t1.age << endl; cout << "辅导学员 姓名: " << t1.stu.name << " 年龄:" << t1.stu.age << " 考试分 数: " << t1.stu.score << endl; system("pause"); return 0; }
5.结构体作函数参数
#include<iostream> using namespace std; struct student { string name; int age; int scores; }; //值传递 void printStudent1(student stu) { stu.age = 21; cout << "年龄是" << stu.age << " " << "名字是" << " " << stu.name << " " << "分数是" << stu.scores << endl; } //地址传递 void printtudent2(student* stu) { stu->age = 23; cout << "年龄是" << stu->age << " " << "名字是" << " " << stu->name << " " << "分数是" << stu->scores << endl; } int main() { struct student stu = { "laozhichi",20,98 }; printStudent1(stu); printtudent2(&stu); system("pause"); return 0; }
6.结构体当中const运用场景
加const防止函数体当中的误操作
7.结构体案例训练
案例描述: 设计一个英雄的结构体,包括成员姓名,年龄,性别;创建结构体数组,数组中存放5名英雄。 通过冒泡排序的算法,将数组中的英雄按照年龄进行升序排序,最终打印排序后的结果。 五名英雄信息如下:
{"刘备",23,"男"}, {"关羽",22,"男"}, {"张飞",20,"男"}, {"赵云",21,"男"}, {"貂蝉",19,"女"},
代码示例
#include<iostream> using namespace std; struct student { string name; int age; int scores; }; void bubbleSort(student arr[], int length) { for (int i = 0; i < length - 1; i++) { for (int j = 0; j < length - 1 - i; j++) { if (arr[j].age > arr[j + 1].age) { student temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } } void printStudents(student arr[], int length) { for (int i = 0; i < length; i++) { cout << arr[i].age << " " << arr[i].name << " " << arr[i].scores << " " << endl; } } int main() { struct student arr[5] = { {"刘备",23,120}, {"关羽",22,135}, {"张飞",20,139}, {"赵云",21,140}, {"貂蝉",19,149}, }; int length = sizeof(arr) / sizeof(student); bubbleSort(arr, length); printStudents(arr, length); system("pause"); return 0; }