8 结构体
8.1结构体基本概念
结构体属于用户自定义的数据类型,允许用户储存不同的数据类型
8.2结构体定义和使用
语法:struct 结构体名{结构体成员列表};
通过结构体创建变量的方式有三种:
struct 结构体名 变量名
struct 结构体名=变量名={成员1,成员2 =值...}
定义结构体是顺便创建变量
8.3结构体数组
作用:将自定义的结构体放入到数组中方便维护
语法:struct 结构体名 数组名{元素个数}={{},{},{},......{}}
8.4结构体指针
作用:通过指针访问结构体中的成员
利用操作符->可以通过结构体指针访问结构体属性
总结:结构体指针可以通过->操作符 来访问结构体中的成员
8.5结构体嵌套结构体
作用:结构体中的成员可以是另一个结构体
例如:每个老师辅导一个学生,一个老师的结构体中,记录一个人学生的结构体
总结:在结构体中可以定义另一个结构体作为成员,来解决实际问题
8.6结构体做函数参数
作用:将结构体作为参数向函数中传递
传递方式有两种:
值传递
地址传递
总结:如果不想修改主函数中的数据,用值传递,反之用地址传递
8.7结构体中const使用场景
作用:用const来防止误操作
8.8结构体案例
8.8.1案例1
案例描述:
学生正在做毕业项目,每名老师带5个学生,总共有3名老师,需求如下
设计学生和老师的结构体,其中在老师的结构体中,有老师姓名和一个存放5名学生的数组作为成员学生的成员有姓名、考试分数,创建数组存放3名老师,通过函数给每个老师及所带的学生赋值最终打印老师数据以及老师所带的学生数据。
8.8.2案例2
案例描述:
设计一个英雄的结构体,包括成员姓名,年龄,性别;创建结构体数组,数组中存放5名英雄。
通过冒泡排序的算法,将数组中的英雄按照年龄进行升序排序,最终打印排序后的结果。
五名英雄信息如下:
{"刘备",23,"男"},
{“关羽”,22,"男"},
{“张飞”,20,"男"},
{“赵云”,21,"男"},
{”貂蝉”,19,"女"},