新闻详情

新闻详情

首页 / 资讯中心 / 详情

C++ 入门学习经验 15——结构体中:初始化、赋值和结构体数组

发布时间:2026/10/26 12:42:47来源:尧图网络
C++ 入门学习经验 15——结构体中:初始化、赋值和结构体数组
大家好啊这里是阳阳的博客一个正在努力学习技术的大学生。上一篇我们聊了结构体的基本概念知道了结构体可以把多个相关变量打包成一个整体。今天这篇继续往下看结构体的几个常用操作结构体变量怎么初始化、能不能整体赋值以及多个结构体变量怎么用数组保存。好了废话不多说咱们直接开始。结构体变量的初始化上一篇我们写过这样的代码struct Student { string name; int age; double score; }; Student stu; stu.name Tom; stu.age 18; stu.score 92.5;这种写法很清楚先定义结构体变量再一个成员一个成员地赋值。如果想写得更紧凑一点也可以在定义变量时直接初始化Student stu {Tom, 18, 92.5};这里的顺序要和结构体里成员出现的顺序对应。结构体定义是struct Student { string name; int age; double score; };所以初始化时{Tom, 18, 92.5}分别对应name - Tom age - 18 score - 92.5完整代码如下#include iostream #include string using namespace std; struct Student { string name; int age; double score; }; int main() { Student stu {Tom, 18, 92.5}; cout stu.name endl; cout stu.age endl; cout stu.score endl; return 0; }结构体变量可以整体赋值结构体还有一个挺方便的地方同类型的结构体变量之间可以直接赋值。比如Student a {Tom, 18, 92.5}; Student b; b a;这表示把a里面的所有成员复制给b。完整示例#include iostream #include string using namespace std; struct Student { string name; int age; double score; }; int main() { Student a {Tom, 18, 92.5}; Student b; b a; cout b.name endl; cout b.age endl; cout b.score endl; return 0; }输出结果和a的内容一样。这里可以把结构体变量理解成一个资料袋。b a;就像把a资料袋里的姓名、年龄、成绩都复制一份放进b这个资料袋里。这个地方和数组有点不一样。普通数组不能直接这样整体赋值int a[3] {1, 2, 3}; int b[3]; b a; // 错误但结构体变量可以直接赋值只要它们是同一种结构体类型。结构体数组保存一组学生如果只保存一个学生用一个结构体变量就够了。但如果要保存多个学生就可以用结构体数组。比如Student stu[3];这表示定义了一个数组里面有 3 个元素每个元素都是一个Student类型。可以这样赋值stu[0] {Tom, 18, 92.5}; stu[1] {Jack, 19, 88.0}; stu[2] {Lucy, 18, 95.0};访问时也很自然cout stu[0].name endl; cout stu[1].score endl;这里可以拆开看stu[0]表示数组里的第一个学生。stu[0].name表示第一个学生的姓名。完整代码如下#include iostream #include string using namespace std; struct Student { string name; int age; double score; }; int main() { Student stu[3] { {Tom, 18, 92.5}, {Jack, 19, 88.0}, {Lucy, 18, 95.0} }; for(int i 0; i 3; i) { cout stu[i].name ; cout stu[i].age ; cout stu[i].score endl; } return 0; }结构体数组很适合保存一组“有多个属性的数据”。以前我们用数组保存成绩int score[3];它只能保存一组整数。现在用结构体数组保存学生Student stu[3];每个学生里面都有姓名、年龄、成绩。这样数据组织起来会清楚很多。用结构体数组找最高分结构体数组经常会和循环一起使用。比如现在有 3 个学生想找出成绩最高的学生。代码可以这样写#include iostream #include string using namespace std; struct Student { string name; int age; double score; }; int main() { Student stu[3] { {Tom, 18, 92.5}, {Jack, 19, 88.0}, {Lucy, 18, 95.0} }; int index 0; for(int i 1; i 3; i) { if(stu[i].score stu[index].score) { index i; } } cout stu[index].name ; cout stu[index].score endl; return 0; }这里的index用来记录当前最高分学生的位置。一开始先认为第一个学生最高int index 0;然后从第二个学生开始比较。如果发现stu[i].score更高就更新index。这道题其实和数组里找最大值很像只不过以前比较的是a[i]现在比较的是stu[i].score比较的是每个结构体里的某个成员。需要注意的地方结构体数组刚开始最容易混的是点号和下标的顺序。正确写法是stu[i].name它表示第i个学生的姓名。有些同学可能会写成stu.name[i]这样就不对了因为stu是一个数组必须先用下标取出某一个学生再用点号访问这个学生的成员。总结今天这篇我们继续练了结构体的几个常见用法结构体变量可以逐个成员赋值。结构体变量可以用{}直接初始化。同类型结构体变量之间可以整体赋值。多个结构体变量可以放进结构体数组。结构体数组常和循环一起使用。结构体数组看起来会比普通数组长一点但思路并不复杂。那这篇就先到这里。如果觉得有帮助记得点赞、关注和收藏谢谢有什么问题欢迎在评论区留言我们一起交流。我们下篇见
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/10/25 3:20:41

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/10/25 3:43:49

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/10/25 4:02:17

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/10/26 10:03:11

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/10/25 3:54:32

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/10/25 5:32:24

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉