物联网/嵌入式工程师
重磅升级:新增硬件电路设计与实战,让你软硬通吃,同级PK无敌!行业风口、政策倾斜,新晋热门高薪不内卷!0基础一站式就业完整路径,抢占先发优势!
在上一小结,利用数组的知识,很方便的存储了全班 50 名同学的数学成绩。
#include <stdio.h> int main(int argc,char **argv) { int math[50]; return 0; }
有的同学可能会这样写:
#include <stdio.h> int main(int argc,char **argv) { int math[50]; int english[50]; return 0; }
这样做是可以的,程序也是可以跑的。那么有没有可能让程序变得更好呢?
我们来思考一下。我们的这个程序里,实际上所有的成绩都是分开的,之间并没有什么关联,这样会带来一个问题,那就是当我们想集中操作某一个学生的成绩的时候,就会变得有一些麻烦。
例如,我们要计算某个学生的平均分的时候,我们实际上只能通过下标来搜索某个学生的成绩。
那么有没有办法能让这个问题得到改善呢?能让同一个学生的成绩"打包"存放。
事实上,在这个问题里,我们需要的是一种基础数据类型之外的数据类型,这种数据类型指代了一个学生,其中包含两个部分,第一个部分用来存放学生的数学成绩,第二个部分用来存放学生的英语成绩。
C++ 为我们提供了这样一种自定义数据类型的功能,叫做结构体。你可以定义一个结构体,用几种相同或者不同的基本数据类型的组合自定义这个数据类型中的内容。这样,我们就可以完成数据"打包"的目标。
在定义了一个结构体之后,我们就可以使用这个结构体了,结构体的使用和变量非常类似:
struct Student { int math; int english; }; int main(int argc,char **argv) { struct Student stu; return 0; } ````
这样申明一个结构体变量stu之后,这个 stu 中就包含两个变量,一个是 int 类型的 math,一个是 int 类型的 english。那么这个时候,这两个值其实并没有被初始化,这两个值是随机的值。我们可以用如下代码来为这两个变量进行赋值。
stu.math = 95; stu.english = 93;
还有一种方法,可以在申明结构体变量的时候进行初始化。
struct Student stu = {95, 93};
回到我们最初的问题,记录50个学生的成绩,程序应该怎么写呢?
struct Student { int math; int english; } int main(int argc,char **argv) { struct Student stu[50]; //为其中一个学生的成绩赋值 stu[20].math = 90; stu[20].english = 95; return 0; }
请验证,完成请求
由于请求次数过多,请先验证,完成再次请求
打开微信扫码自动绑定
绑定后可得到
使用 Ctrl+D 可将课程添加到书签
举报