C++基础入门丨8. 结构体——还需要知道这些
Author:AXYZdong 硕士在读 工科男
有一点思考,有一点想法,有一点理性!
定个小小目标,努力成为习惯!在最美的年华遇见更好的自己!
CSDN@AXYZdong,CSDN首发,AXYZdong原创
唯一博客更新的地址为: 👉 AXYZdong的博客 👈
B站主页为:AXYZdong的个人主页
系列文章目录
- C++基础入门丨1. 初识C++像极了C语言
- C++基础入门丨2. 数据类型基础
- C++基础入门丨3. 搞明白4类运算符——运算符
- C++基础入门丨4. 程序结构有哪几种?——程序流程结构
- C++基础入门丨5. 数组——一维数组和二维数组
- C++基础入门丨6. 函数——定义、调用和声明
- C++基础入门丨7. 指针——一文搞懂指针
操作系统:Windows 10
IDE:Visual Studio 2019
文章目录
- 系列文章目录
- 1 什么是结构体
- 2 结构体的定义和使用
- 3 结构体数组
- 4 结构体指针
- 5 结构体嵌套结构体
- 6 结构体做函数参数
- 7 结构体中 const 使用场景
1 什么是结构体
结构体属于用户自定义的数据类型,允许用户存储不同的数据类型。
2 结构体的定义和使用
语法:struct 结构体名 { 结构体成员列表 };
通过结构体创建变量的方式有三种:
- struct 结构体名 变量名
- struct 结构体名 变量名 = { 成员1值 , 成员2值…}
- 定义结构体时顺便创建变量
#include<iostream>
#include<string>
//学生结构体定义
struct Student
{string s_name;int score;
};
//老师结构体定义
struct Teacher
{string t_name;Student sArray[5];
};int main()
{Teacher tArray[3]; //创建三名老师的数组system("pause");return 0;
}
- 定义结构体时的关键字是
struct,不可省略- 创建结构体变量时,关键字
struct可以省略- 结构体变量利用操作符
.访问成员
3 结构体数组
将自定义的结构体放入到数组中方便维护。
语法:struct 结构体名 数组名[元素个数] = { {} , {} , … {} }
//结构体数组struct student arr[3]={{"张三",18,80 },{"李四",19,60 },{"王五",20,70 }};
4 结构体指针
通过指针访问结构体中的成员。
操作符 -> 可以通过结构体指针访问结构体属性。
#include<iostream>
#include<string>using namespace std;//结构体定义
struct student
{//成员列表string name; //姓名int age; //年龄int score; //分数
};int main() {struct student stu = { "张三",18,100, };struct student* p = &stu;p->score = 80; //指针通过 -> 操作符可以访问成员cout << "姓名:" << p->name << " 年龄:" << p->age << " 分数:" << p->score << endl;system("pause");return 0;
}

5 结构体嵌套结构体
结构体中的成员可以是另一个结构体。
//学生结构体定义
struct Student
{string s_name;int score;
};
//老师结构体定义
struct Teacher
{string t_name;Student sArray[5]; //嵌套了学生的结构体
};
- 在结构体中可以定义另一个结构体作为成员,用来解决实际问题
6 结构体做函数参数
将结构体作为参数向函数中传递。
传递方式有两种:
- 值传递
- 地址传递
#include<iostream>
#include<string>using namespace std;//结构体定义
struct student
{//成员列表string name; //姓名int age; //年龄int score; //分数
};
//值传递
void printstudent1(student stu)
{stu.age = 20;cout << "姓名:" << stu.name << " 年龄:" << stu.age << " 分数:" << stu.score << endl;
}
//地址传递
void printstudent2(student * stu)
{stu->age = 20;cout << "姓名:" << stu->name << " 年龄:" << stu->age << " 分数:" << stu->score << endl;
}
int main() {struct student stu = { "张三",18,100, };printstudent1(stu);cout << "主函数中 姓名:" << stu.name << " 年龄:" << stu.age << " 分数:" << stu.score << endl;printstudent2(&stu);cout << "主函数中 姓名:" << stu.name << " 年龄:" << stu.age << " 分数:" << stu.score << endl;system("pause");return 0;
}

- 在使用地址传递时,形参的改变会影响实参,在上述程序中也就是改变了主函数中的数据。而值传递不会改变主函数中的数据。
- 如果不想修改主函数中的数据,用值传递,反之用地址传递。
7 结构体中 const 使用场景
用 const 来防止误操作。
void printStudent(const student *stu) //加const防止函数体中的误操作
{//stu->age = 100; //操作失败,因为加了const修饰cout << "姓名:" << stu->name << " 年龄:" << stu->age << " 分数:" << stu->score << endl;}
- 在结构体指针前加
const时,就无法通过结构体指针来修改数据,也就是写操作失效,只可进行读操作。
Reference
- [1]:https://www.bilibili.com/video/BV1VJ411M7WR
—— END ——
如果以上内容有任何错误或者不准确的地方,欢迎在下面 👇 留言。或者你有更好的想法,欢迎一起交流学习~~~
更多精彩内容请前往 AXYZdong的博客
相关文章:
C++基础入门丨8. 结构体——还需要知道这些
Author:AXYZdong 硕士在读 工科男 有一点思考,有一点想法,有一点理性! 定个小小目标,努力成为习惯!在最美的年华遇见更好的自己! CSDNAXYZdong,CSDN首发,AXYZdong原创 唯…...
算法第十六期——动态规划(DP)之线性DP
【概述】 线性动态规划,是较常见的一类动态规划问题,其是在线性结构上进行状态转移,这类问题不像背包问题、区间DP等有固定的模板。 线性动态规划的目标函数为特定变量的线性函数,约束是这些变量的线性不等式或等式,目…...
智慧新零售网络解决方案,助力新零售企业数智化转型
随着数字化时代的不断发展,新零售连锁业务模式“线上线下”融合发展,数据、设备在逐渐增加,门店数量也会随着企业规模的扩大而增加,但由于传统网络架构不稳定、延时、容量小影响服务质量(QoS)、分支设备数量…...
Go语言规范中的可赋值
了解可赋值规范的重要性当使用type关键字定义类型的时候,会遇到一些问题,如下:func main(){var i int 2pushInt(i) } type MyInt int //基于int定义MyInt func pushInt(i MyInt){}结果:调用函数pushInt报错 cannot use i (variab…...
外盘国际期货招商:原油市场热点话题
原油市场热点话题 问:目前美国原油库存如何? 答:EIA原油库存数据显示,由于美国炼油厂季节性检修,开工率继续下降,原油库存连续九周增长至2021年5月份以来最高水平,同期美国汽油库存减少而精炼…...
[蓝桥杯 2018 省 A] 付账问题 贪心题
几个人一起出去吃饭是常有的事。但在结帐的时候,常常会出现一些争执。现在有 n 个人出去吃饭,他们总共消费了 S 元。其中第 i 个人带了 ai 元。幸运的是,所有人带的钱的总数是足够付账的,但现在问题来了:每个人分别要出…...
微机原理复习(周五),计算机组成原理图
1.计算机由运算器,控制器,存储器,输入设备,输出设备等5大基本部件组成。 2.冯诺依曼提出存储设计思想是:数字计算机的数制采用二进制,存储程序,程序控制。 3.计算机的基本组成框图:…...
用了10年Postman,意想不到它的Mock功能也如此强大
最近在做一些app,前后端分离的开发模式是必须的。一直用的python flask做后端的快速POC,python本身就是一门胶水语言,开发起来方便快捷,而flask又是一个极简的webserver框架(比Django简洁)。但在这里推荐的…...
项目重构,从零开始搭建一套新的后台管理系统
背景 应公司发展需求,我决定重构公司的后台管理系统,从提出需求建议到现在的实施,期间花了将近半个月的时间,决定把这些都记录下来。 之前的后台管理系统实在是为了实现功能而实现的,没有考虑到后期的扩展性…...
day20_Map
今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、作业 二、比较器排序 三、Collections 四、Map 五、HashMap 六、TreeMap 零、 复习昨日 HashSet 不允许重复元素,无序 HashSet去重原理: 先比较hashco…...
localStorage和sessionStorage
目录 一、localStorage和SessionStorage在哪里,是什么 二、localStorage和sessionStorage区别 三、localStorage常用方法 四、sessionStorage常用方法 一、localStorage和SessionStorage在哪里,是什么 【1】在浏览器开发者工具的Application栏目里&…...
IP地址,子网掩码,网段 概念详解
文章目录1. 子网掩码1.1 子网掩码的概念及作用1.2 子网掩码的组成1.3 子网掩码的表示方法1.4 为什么要使用子网掩码?1.5 子网掩码的分类2. 子网掩码和IP地址的关系2.1 根据掩码确定网段IP地址是以 网络号和 主机号来标示网络上的主机的,我们把网络号相同…...
数影周报:动视暴雪疑似数据泄露,数据出境安全评估申报最新进展
本周看点:动视暴雪疑似员工敏感信息及游戏数据泄露;谷歌云计算部门:两名员工合用一个工位;数据出境安全评估申报最新进展;TikTok Shop东南亚商城在泰国和菲律宾公布;智己汽车获九大金融机构50亿元贷款签约.…...
Web安全最详细学习路线指南,从入门到入职(含书籍、工具包)
在这个圈子技术门类中,工作岗位主要有以下三个方向: 安全研发 安全研究:二进制方向 安全研究:网络渗透方向 下面逐一说明一下. 第一个方向:安全研发 你可以把网络安全理解成电商行业、教育行业等其他行业一样&#x…...
ChatGPT?听说Biying把它下架了
ChatGPT被玩疯了,开始放飞自我 ChatGPT版微软必应上线不到10天…就被网友玩坏了 先说这个词,放飞自我,什么东西才会放飞自我? 人放飞自我,人?你确定是人? 所以让我们来把上面的句子改写一下。…...
中电金信:金融数字化转型路在何方?这里有答案
近期,媒体大数网整合了业内10份研究报告,详解金融数字化转型的思路、方法与路径。其中「中国电子金融级数字底座“源启”白皮书」也被收录其中。让我们一同阅读文章,探究金融数字化转型相关问题的答案吧。 当前,金融科技正在回归…...
【Leedcode】数据结构中链表必备的面试题(第五期)
【Leedcode】数据结构中链表必备的面试题(第五期) 文章目录【Leedcode】数据结构中链表必备的面试题(第五期)1.题目2.思路图解(1)第一步:复制每一个结点,插入到原结点和下一个结点之…...
ECDH secp256k1 集成
在Android 原生api是不支持secp256k1算法的,所以要先集成以下库:implementation com.madgag.spongycastle:core:1.58.0.0compile com.madgag.spongycastle:prov:1.54.0.0compile com.madgag.spongycastle:pkix:1.54.0.0compile com.madgag.spongycastle:…...
工单模型的理解与应用
工单(任务单)模型的定义 工单模型是一种分派任务的方法,可以用来跟踪、评估和报告任务的完成情况。它通常用于针对特定目标的重复性任务或项目,以确保任务能够按时完成并符合期望的标准。 工单模型的基本流程为:提…...
Python年利率计算器【N日年化收益率】
现在有闲钱的人,按照聪明等级从低到高排序应该是钱买股票,一年利率约为-20%钱放银行活期,年利率约为0.3%钱放银行定期,一年利率约为1.5%钱放余额宝(支付宝)或零钱通(微信)࿰…...
2026第四届“盘古石杯“晋级赛 手机取证 手搓复盘(write up)
手机取证1. 分析黄志远phone.E01检材,黄志远手机总共安装了多少款短视频应用?[答案格式:1]apk 分析里面,4 个。当时把 b 站也算上了2. 分析黄志远phone.E01检材,黄志远手机安装的龙虾应用的包名是什么?[答案…...
5分钟快速上手gInk:Windows上最轻量级的免费屏幕画笔工具完整指南
5分钟快速上手gInk:Windows上最轻量级的免费屏幕画笔工具完整指南 【免费下载链接】gInk An easy to use on-screen annotation software inspired by Epic Pen. 项目地址: https://gitcode.com/gh_mirrors/gi/gInk gInk是一款专为Windows设计的屏幕画笔工具…...
3个问题让你了解为什么我们需要中文AI的“数据粮仓“
3个问题让你了解为什么我们需要中文AI的"数据粮仓" 【免费下载链接】MNBVC MNBVC(Massive Never-ending BT Vast Chinese corpus)超大规模中文语料集。对标chatGPT训练的40T数据。MNBVC数据集不但包括主流文化,也包括各个小众文化甚至火星文的数据。MNBVC…...
ABAP系统实现OAuth 2.0最小权限控制的原生方案
1. 这不是一次“配个Token就完事”的集成——为什么ABAP系统里OAuth 2.0落地总卡在“权限过宽”这道坎上你有没有遇到过这样的场景:前端调用SAP Fiori应用,后端ABAP系统需要校验用户身份和操作权限;团队决定上OAuth 2.0,理由很充分…...
AI Agent开发效率提升300%的7个核心框架选择逻辑:从LangChain到AutoGen,2024企业级选型权威对比
更多请点击: https://codechina.net 第一章:AI Agent开发效率提升300%的7个核心框架选择逻辑:从LangChain到AutoGen,2024企业级选型权威对比 企业在构建生产级AI Agent时,框架选型直接决定迭代速度、可观测性与多模态…...
Win11Debloat:Windows系统优化利器,一键清理臃肿应用与隐私设置
Win11Debloat:Windows系统优化利器,一键清理臃肿应用与隐私设置 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes…...
第一次通过通讯节点连接实现无人机仿真模拟(ROS1 + C++ + PX4)
通过与chatGPT之间的交互,让其辅助我进行代码编写-------------------| C 控制节点 || (自主起飞/降落) |------------------|ROS Topic|------v------| MAVROS |------ -----|MAVLink|------v------| PX4 || 飞控 SITL |------------|仿真…...
终极指南:如何为ZXing创建企业级自定义解码器解决业务条码难题
终极指南:如何为ZXing创建企业级自定义解码器解决业务条码难题 【免费下载链接】zxing ZXing ("Zebra Crossing") barcode scanning library for Java, Android 项目地址: https://gitcode.com/gh_mirrors/zx/zxing 你是否曾遇到过标准扫码库无法解…...
智能网络资源下载器:轻松捕获微信、抖音、小红书等平台内容
智能网络资源下载器:轻松捕获微信、抖音、小红书等平台内容 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 你是否…...
告别搜索不到设备!保姆级教程:在Windows上配置QT+MSVC开发BLE应用
Windows平台QTMSVC开发BLE应用全攻略:从环境配置到实战避坑 第一次在Windows上用QT开发BLE应用时,我花了整整三天时间才让程序识别到蓝牙设备。明明代码照着官方文档一字不差,设备指示灯也在闪烁,但程序就是找不到任何设备——这…...
