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

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 结构体名 { 结构体成员列表 };

通过结构体创建变量的方式有三种:

  1. struct 结构体名 变量名
  2. struct 结构体名 变量名 = { 成员1值 , 成员2值…}
  3. 定义结构体时顺便创建变量
#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&#xff1a;AXYZdong 硕士在读 工科男 有一点思考&#xff0c;有一点想法&#xff0c;有一点理性&#xff01; 定个小小目标&#xff0c;努力成为习惯&#xff01;在最美的年华遇见更好的自己&#xff01; CSDNAXYZdong&#xff0c;CSDN首发&#xff0c;AXYZdong原创 唯…...

算法第十六期——动态规划(DP)之线性DP

【概述】 线性动态规划&#xff0c;是较常见的一类动态规划问题&#xff0c;其是在线性结构上进行状态转移&#xff0c;这类问题不像背包问题、区间DP等有固定的模板。 线性动态规划的目标函数为特定变量的线性函数&#xff0c;约束是这些变量的线性不等式或等式&#xff0c;目…...

智慧新零售网络解决方案,助力新零售企业数智化转型

随着数字化时代的不断发展&#xff0c;新零售连锁业务模式“线上线下”融合发展&#xff0c;数据、设备在逐渐增加&#xff0c;门店数量也会随着企业规模的扩大而增加&#xff0c;但由于传统网络架构不稳定、延时、容量小影响服务质量&#xff08;QoS&#xff09;、分支设备数量…...

Go语言规范中的可赋值

了解可赋值规范的重要性当使用type关键字定义类型的时候&#xff0c;会遇到一些问题&#xff0c;如下&#xff1a;func main(){var i int 2pushInt(i) } type MyInt int //基于int定义MyInt func pushInt(i MyInt){}结果&#xff1a;调用函数pushInt报错 cannot use i (variab…...

外盘国际期货招商:原油市场热点话题

原油市场热点话题 问&#xff1a;目前美国原油库存如何&#xff1f; 答&#xff1a;EIA原油库存数据显示&#xff0c;由于美国炼油厂季节性检修&#xff0c;开工率继续下降&#xff0c;原油库存连续九周增长至2021年5月份以来最高水平&#xff0c;同期美国汽油库存减少而精炼…...

[蓝桥杯 2018 省 A] 付账问题 贪心题

几个人一起出去吃饭是常有的事。但在结帐的时候&#xff0c;常常会出现一些争执。现在有 n 个人出去吃饭&#xff0c;他们总共消费了 S 元。其中第 i 个人带了 ai 元。幸运的是&#xff0c;所有人带的钱的总数是足够付账的&#xff0c;但现在问题来了&#xff1a;每个人分别要出…...

微机原理复习(周五),计算机组成原理图

1.计算机由运算器&#xff0c;控制器&#xff0c;存储器&#xff0c;输入设备&#xff0c;输出设备等5大基本部件组成。 2.冯诺依曼提出存储设计思想是&#xff1a;数字计算机的数制采用二进制&#xff0c;存储程序&#xff0c;程序控制。 3.计算机的基本组成框图&#xff1a…...

用了10年Postman,意想不到它的Mock功能也如此强大

最近在做一些app&#xff0c;前后端分离的开发模式是必须的。一直用的python flask做后端的快速POC&#xff0c;python本身就是一门胶水语言&#xff0c;开发起来方便快捷&#xff0c;而flask又是一个极简的webserver框架&#xff08;比Django简洁&#xff09;。但在这里推荐的…...

项目重构,从零开始搭建一套新的后台管理系统

背景 应公司发展需求&#xff0c;我决定重构公司的后台管理系统&#xff0c;从提出需求建议到现在的实施&#xff0c;期间花了将近半个月的时间&#xff0c;决定把这些都记录下来。 之前的后台管理系统实在是为了实现功能而实现的&#xff0c;没有考虑到后期的扩展性&#xf…...

day20_Map

今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记沐沐霸的博客_CSDN博客-Java2301 零、 复习昨日 一、作业 二、比较器排序 三、Collections 四、Map 五、HashMap 六、TreeMap 零、 复习昨日 HashSet 不允许重复元素,无序 HashSet去重原理: 先比较hashco…...

localStorage和sessionStorage

目录 一、localStorage和SessionStorage在哪里&#xff0c;是什么 二、localStorage和sessionStorage区别 三、localStorage常用方法 四、sessionStorage常用方法 一、localStorage和SessionStorage在哪里&#xff0c;是什么 【1】在浏览器开发者工具的Application栏目里&…...

IP地址,子网掩码,网段 概念详解

文章目录1. 子网掩码1.1 子网掩码的概念及作用1.2 子网掩码的组成1.3 子网掩码的表示方法1.4 为什么要使用子网掩码&#xff1f;1.5 子网掩码的分类2. 子网掩码和IP地址的关系2.1 根据掩码确定网段IP地址是以 网络号和 主机号来标示网络上的主机的&#xff0c;我们把网络号相同…...

数影周报:动视暴雪疑似数据泄露,数据出境安全评估申报最新进展

本周看点&#xff1a;动视暴雪疑似员工敏感信息及游戏数据泄露&#xff1b;谷歌云计算部门&#xff1a;两名员工合用一个工位&#xff1b;数据出境安全评估申报最新进展&#xff1b;TikTok Shop东南亚商城在泰国和菲律宾公布&#xff1b;智己汽车获九大金融机构50亿元贷款签约.…...

Web安全最详细学习路线指南,从入门到入职(含书籍、工具包)

在这个圈子技术门类中&#xff0c;工作岗位主要有以下三个方向&#xff1a; 安全研发 安全研究&#xff1a;二进制方向 安全研究&#xff1a;网络渗透方向 下面逐一说明一下. 第一个方向&#xff1a;安全研发 你可以把网络安全理解成电商行业、教育行业等其他行业一样&#x…...

ChatGPT?听说Biying把它下架了

ChatGPT被玩疯了&#xff0c;开始放飞自我 ChatGPT版微软必应上线不到10天…就被网友玩坏了 先说这个词&#xff0c;放飞自我&#xff0c;什么东西才会放飞自我&#xff1f; 人放飞自我&#xff0c;人&#xff1f;你确定是人&#xff1f; 所以让我们来把上面的句子改写一下。…...

中电金信:金融数字化转型路在何方?这里有答案

近期&#xff0c;媒体大数网整合了业内10份研究报告&#xff0c;详解金融数字化转型的思路、方法与路径。其中「中国电子金融级数字底座“源启”白皮书」也被收录其中。让我们一同阅读文章&#xff0c;探究金融数字化转型相关问题的答案吧。 当前&#xff0c;金融科技正在回归…...

【Leedcode】数据结构中链表必备的面试题(第五期)

【Leedcode】数据结构中链表必备的面试题&#xff08;第五期&#xff09; 文章目录【Leedcode】数据结构中链表必备的面试题&#xff08;第五期&#xff09;1.题目2.思路图解&#xff08;1&#xff09;第一步&#xff1a;复制每一个结点&#xff0c;插入到原结点和下一个结点之…...

ECDH secp256k1 集成

在Android 原生api是不支持secp256k1算法的&#xff0c;所以要先集成以下库&#xff1a;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:…...

工单模型的理解与应用

工单&#xff08;任务单&#xff09;模型的定义 工单模型是一种分派任务的方法&#xff0c;可以用来跟踪、评估和报告任务的完成情况。它通常用于针对特定目标的重复性任务或项目&#xff0c;以确保任务能够按时完成并符合期望的标准。   工单模型的基本流程为&#xff1a;提…...

Python年利率计算器【N日年化收益率】

现在有闲钱的人&#xff0c;按照聪明等级从低到高排序应该是钱买股票&#xff0c;一年利率约为-20%钱放银行活期&#xff0c;年利率约为0.3%钱放银行定期&#xff0c;一年利率约为1.5%钱放余额宝&#xff08;支付宝&#xff09;或零钱通&#xff08;微信&#xff09;&#xff0…...

商业应用(12)电影院零售票务系统开发—东方仙盟练气期

未来之窗开源收银台生态未来之窗开源收银台生态&#xff1a;让中小微企业告别重复开发&#xff0c;普惠式接入多场景收银能力 在数字化转型的浪潮中&#xff0c;中小微企业的痛点往往藏在 “重复造轮子” 里 —— 便利店需要收银台、餐饮店需要收银台、游乐场需要带押金管理的收…...

前端新手入门:借助快马仿写腾讯qclaw官网掌握基础布局

作为一个刚接触前端开发的新手&#xff0c;我最近尝试通过模仿企业官网来学习HTML和CSS。腾讯qclaw官网结构清晰、设计规范&#xff0c;非常适合作为入门练习的样板。在这个过程中&#xff0c;我发现InsCode(快马)平台的实时预览功能特别有帮助&#xff0c;让我能即时看到代码修…...

全网资源一键下载:res-downloader终极资源嗅探工具使用指南

全网资源一键下载&#xff1a;res-downloader终极资源嗅探工具使用指南 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloader 还在为…...

Streamlit像素UI深度优化教程:解决Ostrakon-VL终端文字遮挡问题

Streamlit像素UI深度优化教程&#xff1a;解决Ostrakon-VL终端文字遮挡问题 1. 项目背景与问题分析 在开发Ostrakon-VL零售扫描终端时&#xff0c;我们选择了一种独特的像素艺术风格UI设计。这种高饱和度的8-bit复古游戏美学虽然提升了用户体验的趣味性&#xff0c;但也带来了…...

我的上课记

...

4步完成Axure本地化设置:让新手轻松上手的中文界面方案

4步完成Axure本地化设置&#xff1a;让新手轻松上手的中文界面方案 【免费下载链接】axure-cn Chinese language file for Axure RP. Axure RP 简体中文语言包&#xff0c;不定期更新。支持 Axure 9、Axure 10。 项目地址: https://gitcode.com/gh_mirrors/ax/axure-cn …...

iperf3网络性能测试工具完全指南:从安装到企业级应用

iperf3网络性能测试工具完全指南&#xff1a;从安装到企业级应用 【免费下载链接】iperf3-win-builds iperf3 binaries for Windows. Benchmark your network limits. 项目地址: https://gitcode.com/gh_mirrors/ip/iperf3-win-builds 在当今数字化时代&#xff0c;网络…...

构建语音搜索引擎:FireRedASR Pro与Elasticsearch整合实践

构建语音搜索引擎&#xff1a;FireRedASR Pro与Elasticsearch整合实践 你有没有想过&#xff0c;对着手机说句话&#xff0c;就能从海量文档里精准找到你想要的信息&#xff1f;比如&#xff0c;在公司的知识库里&#xff0c;直接问“上季度华东区的销售数据报告在哪&#xff…...

终极指南:如何为Muzei Live Wallpaper配置GitHub Actions自动化构建与测试

终极指南&#xff1a;如何为Muzei Live Wallpaper配置GitHub Actions自动化构建与测试 【免费下载链接】muzei Muzei Live Wallpaper for Android 项目地址: https://gitcode.com/gh_mirrors/mu/muzei Muzei Live Wallpaper是一款备受欢迎的Android动态壁纸应用&#xf…...

5个关键步骤:OpenCore Legacy Patcher旧Mac设备系统升级全攻略

5个关键步骤&#xff1a;OpenCore Legacy Patcher旧Mac设备系统升级全攻略 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 随着苹果公司对旧款Mac设备的系统支…...