A08-C++结构体的定义以及使用

8.1结构体概念

结构体就是用户自定义的数据类型,允许存储不同数据类型

8.2结构体的定义和使用

语法:struct 结构体{结构体成员列表}

结构体声明变量的三种方式,可见:

A08-C++结构体的定义以及使用_第1张图片

 8.3结构体数组

作用:将自定义的结构体放入数组中,方便进行维护

结构体数组的声明方式,如下:

A08-C++结构体的定义以及使用_第2张图片

 8.4结构体指针

作用:通过指针访问结构体中的成员

操作符:->

A08-C++结构体的定义以及使用_第3张图片

8.5结构体嵌套

 作用:结构体中的成员可以定义另一结构体;

如何定义以及如何声明,见:

A08-C++结构体的定义以及使用_第4张图片

 8.6结构体作参数向函数体传递

传递的方式有两种:值传递,地址传递

这一小节实际上就是将结构体和函数相结合起来,如果用函数来输出结构体是如何的形式,需要注意的仍然是值传递不改变实参的值,而地址传递会改变实参的值。

A08-C++结构体的定义以及使用_第5张图片

 8.7结构体中 Const使用场景

首先我们利用正常的值传递,如下

A08-C++结构体的定义以及使用_第6张图片

但是我们要明确:值传递函数,往往会开辟出一群新的内存空间出来,用于重新传递,如果需要传递的数据量比较大的话,此时会占用较大的内存空间

所以我们习惯使用指针来,地址传递,但是地址传递在函数体中,如果赋值不恰当,会引起实参的改变,此时使用Const有利于稳定参数的传递。

A08-C++结构体的定义以及使用_第7张图片

 如:此时由于const的定义,无法去改变实参的数值,否则会报错。

 {案例:一个老师的结构体,包含一个学生的结构体,利用函数来生成老师姓名,学生姓名,学生成绩,最后利用函数输出}

解1:该解法是自己做的,想法是在主程序main()输入老师姓名,学生成绩,最后用于输出;

函数体用的是指针地址传输,可以直接改变结构体中的数据;

A08-C++结构体的定义以及使用_第8张图片

A08-C++结构体的定义以及使用_第9张图片

 解2:标准答案,利用函数来直接生成数据,并且利用函数来输出。

细节1:不管是值传递还是地址传输,对于结构体而言是确确实实传输进去数据了的,所以两种方法都可以使用

细节2:在老师的结构体下直接用了数组,不用一个元素一个元素去敲;

细节3:自动生成老师姓名和学生姓名时,利用了字符尾号相加的方式

 A08-C++结构体的定义以及使用_第10张图片

A08-C++结构体的定义以及使用_第11张图片

 

 

 

你可能感兴趣的:(A08-C++结构体的定义以及使用)