目录
1.结构体概述
1.1结构体的概念
1.2结构体的定义和使用
2.结构体数组
3.结构体指针
4.结构体嵌套结构体
5.结构体做函数参数
结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。
语法:struct 结构体名 {结构体成员列表};
通过结构体创建变量的方式有三种:
(1)struct 结构体名 变量名
(2)struct 结构体名 变量名 ={成员1值,成员2值……}
(3)定义结构体时顺便创建变量
#include<iostream> #include"swap.h" #include<string> using namespace std; //1.创建学生数据类型 struct Student { //成员列表 string name; int age; int score; }s3; int main() { //2.通过学生类型创建具体学生,有三种方式 /* (1)struct Student s1 (2)struct Student s2={......} (3)在定义结构体时顺便创建结构体变量 */ //(1)种:struct Student s1 struct Student s1; s1.name = "张三"; s1.age = 18; s1.score = 100; cout << "姓名:" << s1.name << "年龄:" << s1.age << "分数:" << s1.score << endl; //(2)种:struct Student s2={......} struct Student s2 = { "李四",19,80 }; cout << "姓名:" << s2.name << "年龄:" << s2.age << "分数:" << s2.score << endl; //(3)在定义结构体时顺便创建结构体变量,在前面定义结构体的时候在末尾定义结构变量 s3.name = "王五"; s3.age = 20; s3.score = 60; cout << "姓名:" << s3.name << "年龄:" << s3.age << "分数:" << s3.score << endl; }
作用:将自定义的结构体放入到数组中方便维护、
语法:struct 结构体名 数组名[元素个数]={{},{},{}……}
#include<iostream> #include"swap.h" #include<string> using namespace std; //结构体数组 //1.定义结构体 struct Student { string name; int age; int score; }; int main() { //2.创建结构体数组 struct Student stuArray[] = { {"alice",18,100}, {"Bob",20,99}, {"helon",21,70} }; //3.给结构体数组中的元素赋值 stuArray[2].name = "赵六"; //4.遍历结构体数组 for (int i = 0; i < 3; i++) { cout << "neme:" << stuArray[i].name << "age:" << stuArray[i].age << "score:" << stuArray[i].score << endl; } }
作用:通过指针访问结构体中的成员
利用操作符->可以通过结构体指针访问结构体属性
#include<iostream> #include"swap.h" #include<string> using namespace std; //结构体数组 //1.定义结构体 struct Student { string name; int age; int score; }; int main() { //1.创建结构体变量 struct Student s = { "alice",18,100 }; //2.通过指针指向结构体变量 struct Student* p = &s; //通过指针访问结构体变量中的数据 cout << "name " << p->name << "age " << p->age << "score " << p->score << endl; }
#include<iostream> #include"swap.h" #include<string> using namespace std; //结构体套结构体 //1.定义结构体 struct Student { string name; int age; int score; }; struct teacher { int id; string name; int age; struct Student stu;//所带的学生 }; int main() { teacher t; t.id = 10000; t.name = "Bob"; t.age = 20; t.stu.name = "HELON"; t.stu.age = 20; t.stu.score = 60; cout << t.name << t.age << t.id << t.stu.name<< endl; }
作用:将结构体作为参数向函数中传递
#include<iostream> #include"swap.h" #include<string> using namespace std; //结构体套结构体 //1.定义结构体 struct Student { string name; int age; int score; }; //打印学生信息函数 //way1.值传递 void printStudent1(struct Student s) { cout << "子函数1中 姓名:" << s.name << " 年龄: " << s.age << " 分数: " << s.score << endl; } //way2.地址传递 void printStudent2(struct Student* p) { cout << "子函数2中 姓名:" << p->name << " 年龄: " << p->age << " 分数: " << p->score << endl; } int main() { //将学生传入到一个参数中,打印学生的全部信息 struct Student s; s.name = "alice"; s.age = 20; s.score = 88; printStudent1(s); printStudent2(&s); }