struct 定义与访问

把相关的数据装进一个“盒子”——自定义自己的类型。

GESPCSP-J

◎学完你会

1动一动:给结构体填成员

struct Student { int id; // 学号 string name; // 姓名 int score; // 分数 }; // ⚠️ 别漏分号 Student s; s.id = 1001; s.name = "张三"; s.score = 96;
Student s = { id: ?, name: ?, score: ? }
点一下,把张三的学号、姓名、分数填进结构体。

2关键命令

写法含义结果
struct Student{...};定义类型(别漏分号)得到新类型
Student s;创建变量 ss 是一份结构体
s.id = 1001;给成员赋值.点 访问
s.name读成员取到值
结构体让“一堆相关数据”能当作一个整体传递、存放——比如一个学生该带的学号、姓名、成绩全装在一起。

⚠易错点

声明末尾要分号:struct Student{...} 后面忘了 ;,编译直接报错。这是初学者最常犯的一条。
结构体名字和变量名别混:struct Student 是类型(像 int),Student s 是变量。类型不占内存,变量才占。

?跨学科:结构体像“一张登记表”

医院挂号表上,姓名、年龄、病历号、过敏史排在一起——一个患者的全部信息被“打包”。结构体就是这个登记表:把属于同一对象的字段归拢。

好处也像登记表:拿着“一张表”就能代表一个人,而不是散落一地的小纸条。C++ 里我们把这种“打包”叫聚合,是面向对象思想的起点。

✎练一练

定义结构体 struct Student{ int id; string name; } 时,末尾的 ; 需要吗?
结构体定义是一条完整语句,末尾必须加分号,漏掉会编译报错。这也是最常见的坑。
有 Student s;,要把 s 的分数改成 95,哪个写法对?
答案:s.score = 95;——结构体变量用 .(点)访问成员。注意:s.score=95; 是赋值成员;struct 只是定义类型时用一次,访问成员始终用变量名 + 点。