当前位置: 首页 > news >正文

C++ 入门学习经验 14——结构体上:把多个变量打包成一个整体

大家好啊!这里是阳阳的博客,一个正在努力学习技术的大学生。

前面我们把数组和字符串重新梳理了一遍,从这篇开始进入一个新的知识点:结构体。

结构体刚开始看起来格式有点陌生,但它解决的问题很直观:当一堆变量本来就属于同一个事物时,我们可以把它们放到一起管理。

好了,废话不多说,咱们直接开始。


从学生信息开始看问题

假设我们要保存一个学生的信息,包括姓名、年龄和成绩。

如果只保存一个学生,可以这样写:

string name = "Tom"; int age = 18; double score = 92.5;

这样写没有问题,变量也很清楚。

但如果要保存三个学生的信息,代码可能会变成这样:

string name1 = "Tom"; int age1 = 18; double score1 = 92.5; string name2 = "Jack"; int age2 = 19; double score2 = 88.0; string name3 = "Lucy"; int age3 = 18; double score3 = 95.0;

数据一多,变量就开始散了。我们只能通过变量名里的123来判断这些信息属于哪个学生。

如果后面再加上学号、班级、性别,变量数量会越来越多,代码也会越来越不好管理。

结构体就是用来解决这类问题的。它可以把一组相关的数据放到一起,比如把一个学生的姓名、年龄和成绩打包成一个整体。


结构体的基本写法

结构体用struct定义。

比如我们想定义一个学生类型,可以这样写:

struct Student { string name; int age; double score; };

这里的Student是我们自己起的类型名,表示“学生”这种数据。

大括号里面的:

string name; int age; double score;

成员变量。可以先简单理解成结构体里面的小变量。

定义好结构体类型以后,就可以创建一个学生变量:

Student stu;

这句话和以前写:

int a;

其实有点像。

int是系统提供的类型,a是变量名。

Student是我们自己定义的类型,stu是变量名。

所以Student stu;的意思就是:定义一个学生变量stu


用点号访问结构体成员

有了结构体变量以后,要访问里面的成员,需要加个点号。

比如:

stu.name = "Tom"; stu.age = 18; stu.score = 92.5;

输出时也一样:

cout << stu.name << endl; cout << stu.age << endl; cout << stu.score << endl;

完整代码如下:

#include <iostream> #include <string> using namespace std; struct Student { string name; int age; double score; }; int main() { Student stu; stu.name = "Tom"; stu.age = 18; stu.score = 92.5; cout << stu.name << endl; cout << stu.age << endl; cout << stu.score << endl; return 0; }

这里大家先重点记住两个动作。

定义结构体类型:

struct Student { string name; int age; double score; };

使用结构体成员:

stu.name stu.age stu.score

点号可以理解成“从这个结构体变量里面取出某个成员”。


结构体像一个资料袋

我觉得结构体可以理解成一个资料袋。

一个学生有很多信息,比如姓名、年龄、成绩、学号。平时这些信息都属于同一个学生,所以放在一个资料袋里会更清楚。

Student stu;

就像准备了一个学生资料袋。

stu.name stu.age stu.score

就是从这个资料袋里拿出姓名、年龄和成绩。

这种理解对刚开始学结构体的同学会比较友好。先不用急着把结构体和类、对象这些概念放在一起想,现阶段先知道:结构体能把多个相关变量组织成一个整体。


结构体适合描述有多个属性的事物

结构体特别适合描述“一个事物有多个属性”的情况。

比如学生:

姓名、年龄、成绩

图书:

书名、作者、价格

坐标点:

x 坐标、y 坐标

日期:

年、月、日

比如坐标点可以这样写:

struct Point { int x; int y; };

使用时:

Point p; p.x = 3; p.y = 5;

这里的p表示一个点,p.xp.y分别表示这个点的横坐标和纵坐标。

如果不用结构体,也可以写两个普通变量:

int x = 3; int y = 5;

但点一多,变量之间的关系就容易乱。结构体能让代码更清楚,也更接近我们平时理解事物的方式。


刚开始容易写错的地方

结构体最容易漏的地方,是最后的分号。

错误写法:

struct Student { string name; int age; double score; }

正确写法:

struct Student { string name; int age; double score; };

大括号后面的这个分号一定要写。我刚开始学的时候也经常忘,因为看见大括号结束了,手就自然停了。

还有一个容易混的地方,是类型名和变量名。

Student stu;

这里Student是类型名,stu是变量名。

后面访问成员时,用的是变量名:

stu.name

不能写成:

Student.name

因为Student只是类型,真正保存数据的是stu这个变量。


总结

今天这篇,我们先从概念上认识了结构体。

结构体可以把多个相关变量放到一个整体里。它适合描述一个事物的多个属性,比如学生的姓名、年龄、成绩,图书的书名、作者、价格。

这篇先记住几个点:

  1. struct定义结构体类型。

  2. 结构体里面可以放多个成员变量。

  3. 定义结构体变量后,用点号访问成员。

  4. 结构体定义结束后要加分号。

  5. 结构体适合管理一组相关的数据。

对于刚开始学 C++ 的同学来说,结构体是一个很重要的过渡。前面我们更多处理单个变量、数组和字符串,到了结构体这里,就开始把不同类型的数据组合在一起了。

不用一开始就把所有用法都记住。先理解它为什么要出现,再多敲几遍基础代码,慢慢就会顺起来。

那这篇就先到这里。如果觉得有帮助,记得点赞、关注和收藏,谢谢!😄

有什么问题欢迎在评论区留言,我们一起交流。

我们下篇见~

http://www.jsqmd.com/news/1144968/

相关文章:

  • 鲁棒管模型预测控制实战手册:MATLAB实现与扰动处理深度解析
  • 2026财务分析师岗位,如何提升工作能力
  • 替换system函数,减少资源开销,用 posix_spawn函数
  • 蛋仔网:试玩站点的任务状态和渠道字段怎么设计
  • 基于改进YOLOv5的织物缺陷检测算法研究
  • 【总结】Nginx 反代 Docker 容器:容器重建后刷新 502,一行配置根治
  • 变频器与伺服系统的噪声战争:07 伺服编码器为什么最怕变频器?
  • 【2026年下】中小学教师资格考试《综合素质》(中学)历年真题和答案
  • 2026如何可以提升个人能力,胜任产品经理岗位
  • AI技能标准化开发实战:mattpocock/skills项目解析与应用指南
  • 第1篇:从“促销活动”的一堆 if-else 说起
  • 进程监控核心命令top详解
  • PYTHON+AI LLM DAY NINTY-NINE
  • AIGC检测2026年必看:论文AI率过高怎么办?检测与降重全攻略
  • 2026年,揭秘苦荞米背后的绿色生产故事
  • 公立医院医美科系统选型:合规先行!
  • 亲测分享国内专业鲜米机品牌!
  • 【C++】014、左值与右值的区别
  • 暑期成长转型实操指南:凤凰少年 AI 分层特训能力进阶手册
  • BUUCTF 简单注册器
  • [特殊字符] 从零到一玩转CODEX智能体开发:一套课搞定AI自动化视频/办公/数字人/小程序
  • 新高考高中语文必背古诗文72篇PDF电子版(含默写练习题)
  • 【UE源码精读-ActionRPG】伤害管线:从捕获到扣血
  • ZYNQ XCZU27DR FreeRTOS TTC 定时器中断学习笔记
  • 算法之旅-Hot100—移动零
  • UE4SS终极指南:5分钟掌握虚幻引擎游戏脚本注入与修改
  • 【C++】015、函数参数:值传递,指针传递,引用传递的区别
  • 方差(实例实操、与标准差的区别)
  • Windows 11 云重建功能实测:无需U盘也能从云端恢复系统
  • 梅开二度,这次拿下系统分析师