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

C++之结构体

结构体

//一、结构体的概念、定义和使用


// 概念:结构体属于用户自定义的数据类型,允许用户存储不同的数据类型

#include<iostream>
using namespace std;
#include<string>
//1.创建学生数据类型:学生包括(姓名,年龄,分数)
//自定义数据类型,一些类型集合组成的一个类型
//语法 strcut 类型名称{成员列表};  注意后面有;
struct Student
{//成员列表//姓名string name;//年龄int age;//分数int score;
}s3;//2.通过学生类型创建具体学生int main()
{
//2.1 struct Student s1//strcut关键字可以省略//struct Student s1;Student s1;//给s1属性赋值,通过.访问结构体变量中的属性s1.name = "张三";s1.age = 18;s1.score = 100;cout << "姓名:" << s1.name << " 年龄:" << s1.age << " 分数:" << s1.score << endl;
//2.2 struct Student s2={...}struct Student s2 = { "李四",19,80 };cout << "姓名:" << s2.name << " 年龄:" << s2.age << " 分数:" << s2.score << endl;//2.3 在定义结构体时顺便创建结构体变量(如果没有s3,则上面数据{}后要加;s3.name = "王五";s3.age = 20;s3.score = 60;cout << "姓名:" << s3.name << " 年龄:" << s3.age << " 分数:" << s3.score << endl;//一般用第1或2种return 0;
}

//二、结构体数组


//作用:将自定义的结构体放入到数组中方便维护
//语法:struct 结构体名 数组名{元素个数}={ {},{},...{} }

#include<iostream>
using namespace std;//结构体数组
//1.定义结构体
struct Student
{string name;int age;int score;
};
int main()
{//2.创建结构体数组struct Student stuArray[3] ={{"张三",18,100},{"李四",28,99},{"王五",38,66}};//3.给结构体数组中的元素赋值//一开始不知道人家名字,后面改stuArray[2].name = "赵六";stuArray[2].age = 80;stuArray[2].score = 80;//4.便利结构体数组for (int i = 0; i < 3; i++){cout    << " 姓名: " << stuArray[i].name << " 年龄: " << stuArray[i].age << " 分数: " << stuArray[i].score << endl;}return 0;
}

//三、结构体指针


//作用:通过指针访问结构体中的成员 利用操作符->

#include<iostream>
using namespace std;struct student
{string name;int age;int scroe;
};
int main()
{//1.创建学生结构体变量struct student s = { "张三",18,100 };//struct可省略//2.通过指针指向结构体变量struct student* p = &s;//struct可省略//3.通过指针访问结构体变量中的数据//通过结构体指针 访问结构体中的属性,需要利用'->'cout << "姓名: " << p->name << " 年龄: " << p->age << " 分数: " << p->scroe << endl;return 0;
}

//四、结构体嵌套结构体


//作用:结构体中的成员可以是另一个结构体

#include<iostream>
using namespace std;
#include<string>struct student
{string name;int age;int score;
};
struct teacher
{int id;string name;int age;struct student s;
};int main()
{teacher t;t.id = 18888;t.name = "老王";t.age = 50;t.s.name = "小王";t.s.age = 20;t.s.score = 60;cout << "老师姓名: " << t.name << " 老师编号: " << t.id << " 老师年龄: " << t.age<< " 老师辅导学生姓名:  " << t.s.name << " 学生年龄: " << t.s.age << "  学生分数: " << t.s.score << endl;return 0;
}

//五、结构体做函数参数


//作用:将结构体作为参数向函数中传递
//传递方式有两种:值传递和地址传递

#include<iostream>
using namespace std;
#include<string>struct student
{string name;int age;int score;
};
//打印学生信息函数
//1.值传递
void printStudent1(struct student s)
{s.age = 100;cout << " 子函数1中 姓名:" << s.name << " 年龄:" << s.age << " 分数: " << s.score << endl;
}
//2.地址传递
void printStudent2(struct student * p)
{p->age = 200;cout << "子函数2中 姓名:" << p->name << " 年龄: " << p->age << " 分数: " << p->score << endl;
}
int main()
{//结构题做函数参数//将学生传入到一个参数中,打印学生身上的所有信息//创建一个结构体变量struct student s;s.name = "张三";s.age = 18;s.score = 85;printStudent1(s);printStudent2(&s);cout << "main函数中打印 姓名:" << s.name << " 年龄: " << s.age << " 分数:" << s.score<<endl;return 0;
}

//六、结构体中const使用场景


//作用:用const来防止误操作

#include<iostream>
using namespace std;
#include<string>//const的使用场景struct student
{string name;int age;int score;
};//将函数中的形参改为指针,可以减少内存空间,而且不会复制新的副本出来
void printStudent(const student *s)//指针目的是节省空间,const是防止修改了形参把实参变了,即防止误操作
{s->age = 150;//(误操作了)//但是利用了const age还是为15岁  只能读不能写cout << "姓名: " << s->name << " 年龄: " << s->age << " 得分: " << s->score << endl;
}int main()
{//创建结构体变量struct student s = { "张三",15,70 };//通过函数打印结构变量信息printStudent(&s);cout << s.age;return 0;
}

相关文章:

C++之结构体

结构体 //一、结构体的概念、定义和使用 // 概念&#xff1a;结构体属于用户自定义的数据类型&#xff0c;允许用户存储不同的数据类型 #include<iostream> using namespace std; #include<string> //1.创建学生数据类型&#xff1a;学生包括&#xff08;姓名&am…...

分布式ID选型对比(1)

常见的几种ID生成方式对比: 种类 全局唯一 高性能 高可用 趋势递增 中心服务 缺点 UUID 是 高(本地生成,(无网络开销) 低(无序,不适用) 否 否 无序、字符串 数据库自增 单表唯一 中 中(宕机就会使业务服务中断) 是 否 安全性差,能猜出来规律 对于分库分表场景无法唯一 数据库自…...

T-SQL 高阶语法之存储过程

一&#xff1a;存储过程概念 预先存储好的sql程序&#xff0c;通过名称和参数进行执行&#xff0c;供应程序去调用&#xff0c;也可以有返回结果&#xff0c;存储过程可以包含sql语句 可以包含流程控制、逻辑语句等。 二&#xff1a;存储过程的优点 执行速度更快 允许模块化…...

解决鸿蒙模拟器卡顿的问题

缘起 最近在学习鸿蒙的时候&#xff0c;发现模拟器非常卡&#xff0c;不要说体验到鸿蒙的丝滑&#xff0c;甚至到严重影响使用的程度。 根据我开发Android的经验和在论坛翻了一圈&#xff0c;最终总结出了以下几个方案。 创建模拟器 1、在DevEco Virtual Device Configurat…...

【LeetCode每日一题】【BFS模版与例题】863.二叉树中所有距离为 K 的结点

BFS的基本概念 BFS 是广度优先搜索&#xff08;Breadth-First Search&#xff09;的缩写&#xff0c;是一种图遍历算法。它从给定的起始节点开始&#xff0c;逐层遍历图中的节点&#xff0c;直到遍历到目标节点或者遍历完所有可达节点。 BFS 算法的核心思想是先访问当前节点的…...

设计模式-结构模式-装饰模式

装饰模式&#xff08;Decorator Pattern&#xff09;&#xff1a;动态地给一个对象增加一些额外的职责&#xff0c;就增加对象功能来说&#xff0c;装饰模式比生成子类实现更为灵活。装饰模式是一种对象结构型模式。 //首先&#xff0c;定义一个组件接口&#xff1a; public in…...

MySQL:一行记录如何

1、表空间文件结构 表空间由段「segment」、区「extent」、页「page」、行「row」组成&#xff0c;InnoDB存储引擎的逻辑存储结构大致如下图&#xff1a; 行 数据库表中的记录都是按「行」进行存放的&#xff0c;每行记录根据不同的行格式&#xff0c;有不同的存储结构。 页…...

‘grafana.ini‘ is read only ‘defaults.ini‘ is read only

docker安装grafana 关闭匿名登录情况下的免密登录遇到问题 grafana.ini is read only defaults.ini is read only 参考回答&#xff08;Grafana.ini giving me the creeps - #2 by bartweemaels - Configuration - Grafana Labs Community Forums&#xff09; 正确启动脚本 …...

博途PLC 面向对象系列之“输送带控制功能块“(SCL代码)

这篇是面向对象系列之"输送带功能块"的封装,面向对象是系列文章,相关链接如下: 1、面向对象系列之找"对象" https://rxxw-control.blog.csdn.net/article/details/136150027https://rxxw-control.blog.csdn.net/article/details/1361500272、面向对象…...

2024-02学习笔记

1.当我们向Set集合中添加一个已经存在的元素时 当我们向Set集合中添加一个已经存在的元素时&#xff0c;Set集合会如何处理呢&#xff1f;实际上&#xff0c;Set集合不会将重复的元素添加到集合中。当我们向Set集合中添加一个元素时&#xff0c;Set集合会首先判断该元素是否已…...

最新消息:英特尔宣布成立全新独立运营的FPGA公司——Altera

今天&#xff0c;英特尔宣布成立全新独立运营的FPGA公司——Altera&#xff08;2015年6月Intel以 167 亿美元的价格&#xff0c;收购FPGA厂商Altera&#xff09;。首席执行官Sandra Rivera和首席运营官Shannon Poulin分享展示其在超过550亿美元的市场中保持领先性的战略规划&am…...

RC正弦波振荡电路

RC正弦波振荡电路 RC正弦波振荡电路又称文氏电桥振荡电路&#xff0c;可以设计频率为f1/2πRC的正弦波发生器。 RC正弦波振荡电路设计&#xff1a;50Hz,振幅为3.47V 电路分析&#xff1a; 1.起振条件取决于R1, R4&#xff0c;R2与1N4148并联电阻&#xff08;下面简称Rf&#…...

【Git学习笔记】提交PR

step1 克隆一个仓库 git clone .....step2 创建一个分支 (Creating a branch) # 创建并切换到本地新分支&#xff0c;分支的命名尽量简洁&#xff0c;并与解决的问题相关 git checkout -b delete-unused-linkstep3 做出修改 (Make changes) step4 提交修改 # 保存本地修…...

线程池的相关参数

在Java中线程池是一种池化技术&#xff0c;用于管理和复用线程&#xff0c;提高线程的利用率和性能。下面是一些常见的线程池的参数及其解释&#xff1a; 一&#xff1a;线程池的七大参数 public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTim…...

图书推荐||Word文稿之美

让你的文档从平凡到出众&#xff01; 本书内容 《Word文稿之美》是一本全面介绍Word排版技巧和应用的实用指南。从初步认识数字排版到高效利用模板、图文配置和表格与图表的排版技巧&#xff0c;再到快速修正错误和保护文件&#xff0c;全面系统地讲解数字排版的技术和能力&…...

前端导出word文件的多种方式、前端导出excel文件

文章目录 纯前借助word模板端导出word文件 &#xff08;推荐&#xff09;使用模板导出 前端通过模板字符串导出word文件前端导出 excel文件&#xff0c;node-xlsx导出文件&#xff0c;行列合并 纯前借助word模板端导出word文件 &#xff08;推荐&#xff09; 先看效果&#xf…...

Linux和Windows操作系统在腾讯云幻兽帕鲁服务器上的内存占用情况如何?

Linux和Windows操作系统在腾讯云幻兽帕鲁服务器上的内存占用情况如何&#xff1f; 对于Linux操作系统&#xff0c;有用户分享了个人最佳实践来解决内存问题&#xff0c;包括使用Linux脚本让服务器每天重启一次&#xff0c;以及建议在不需要时尽量减少虚拟内存的使用。此外&…...

腾讯云4核8G的云服务器性能水平?使用场景说明

腾讯云4核8G服务器适合做什么&#xff1f;搭建网站博客、企业官网、小程序、小游戏后端服务器、电商应用、云盘和图床等均可以&#xff0c;腾讯云4核8G服务器可以选择轻量应用服务器4核8G12M或云服务器CVM&#xff0c;轻量服务器和标准型CVM服务器性能是差不多的&#xff0c;轻…...

1_SQL

文章目录 前端复习SQL数据库的分类关系型数据库非关系型数据库&#xff08;NoSQL&#xff09; 数据库的构成软件架构MySQL内部数据组织方式 SQL语言登录数据库数据库操作查看库创建库删除库修改库 数据库中表的操作选择数据库创建表删除表查看表修改表 数据库中数据的操作添加数…...

PoC免写攻略

在网络安全领域&#xff0c;PoC&#xff08;Proof of Concept&#xff09;起着重要的作用&#xff0c;并且在安全研究、漏洞发现和漏洞利用等方面具有重要的地位。攻击方视角下&#xff0c;常常需要围绕 PoC 做的大量的工作。常常需要从手动测试开始编写 PoC&#xff0c;再到实…...

SkyWalking 10.2.0 SWCK 配置过程

SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外&#xff0c;K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案&#xff0c;全安装在K8S群集中。 具体可参…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

SpringCloudGateway 自定义局部过滤器

场景&#xff1a; 将所有请求转化为同一路径请求&#xff08;方便穿网配置&#xff09;在请求头内标识原来路径&#xff0c;然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

关键领域软件测试的突围之路:如何破解安全与效率的平衡难题

在数字化浪潮席卷全球的今天&#xff0c;软件系统已成为国家关键领域的核心战斗力。不同于普通商业软件&#xff0c;这些承载着国家安全使命的软件系统面临着前所未有的质量挑战——如何在确保绝对安全的前提下&#xff0c;实现高效测试与快速迭代&#xff1f;这一命题正考验着…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)

引言 工欲善其事&#xff0c;必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后&#xff0c;我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集&#xff0c;就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

tomcat指定使用的jdk版本

说明 有时候需要对tomcat配置指定的jdk版本号&#xff0c;此时&#xff0c;我们可以通过以下方式进行配置 设置方式 找到tomcat的bin目录中的setclasspath.bat。如果是linux系统则是setclasspath.sh set JAVA_HOMEC:\Program Files\Java\jdk8 set JRE_HOMEC:\Program Files…...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙&#xff08;HarmonyOS5&#xff09;中集成百度地图&#xff0c;可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API&#xff0c;可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​&#xff1a;下载安装 ​​De…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解

进来是需要留言的&#xff0c;先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码&#xff0c;输入的<>当成字符串处理回显到页面中&#xff0c;看来只是把用户输…...