C++—结构体

结构体(struct),是一种用户自定义复合数据类型,可以包含不同类型的不同成员。

结构体的声明定义和使用的基本语法:

// 声明结构体struct 结构体类型
{    成员1类型 成员1名称;    ...成员N类型 成员N名称;
};

除声明外,struct关键字可省略

成员的访问可以通过 . 来进行

结构体成员默认值

在设计一个结构体的时候,可以根据需要向成员设置默认值

如果结构体中的变量,比如name、major_code、dormitory没有被指定,那么程序就会输出默认值结构体数组

作为用户自定义数据类型,结构体是支持数组模式的。

// 声明数组对象
[struct] 结构体类型 数组名[数组长度];
// 赋值数组的每一个元素
数组名[0] = {, , ..., };
数组名[1] = {, , ..., };
...
// 声明和赋值同步的快捷写法
[struct] 结构体类型 数组名[数组长度] = {{}, {}, ..., {}};

结构体指针

作为一种数据类型,结构体也是支持使用指针的。

结构体同样可以使用指针数组,主要用于动态内存分配,方便管理大量结构体占用的内存。

struct Student
{string name;string major_code = "003032";       // 默认专业代码int dormitory_num = 1;              // 默认分配1号楼宿舍
};struct Student stu = {"周杰轮", "003001", 5};struct Student *p = &stu;

通过new操作符申请指针空间

struct Student *p = new Student {"周杰轮", "003001", 5};

使用指针变量访问结构体成员需要更换操作符号为:->

cout << p->name << endl;            // 访问成员name
cout << p->major_code << endl;      // 访问成员
major_codecout << p->dormitory_num << endl;   // 访问成员dormitory_num

举例:

#include "iostream"
using namespace std;int main()
{struct Student{string name;int age = 11;string gender = "男";};struct Student arr1[3] = {{"周杰轮"}, {"林军杰"}, "王力鸿"};struct Student * p1 = arr1;     // 数组的对象本质上就是地址(指向数组的第一个元素的位置)cout << "数组的第一个元素中记录的name是:" << p1[0].name << endl;cout << "数组的第二个元素中记录的name是:" << p1[1].name << endl;cout << "数组的第三个元素中记录的name是:" << p1[2].name << endl;// 通过new操作符,自行申请结构体数组的空间(可以通过delete回收)struct Student * p2 =new Student[3] {{"周杰轮"}, {"林军杰"}, {"王力鸿"}};cout << "数组2的第一个元素中记录的name是:" << p2[0].name << endl;cout << "数组2的第二个元素中记录的name是:" << p2[1].name << endl;cout << "数组2的第三个元素中记录的name是:" << p2[2].name << endl;delete[] p2;return 0;
}

其中,

struct Student * p1 = arr1; 

这个可以直接赋值的原因在于arr1表示的是数组,数组就是地址所所以可以直接赋值。

delete[] p2;

在删除空间地址的时候,需要[ ]这个符号是因为处理的是数组。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/13977.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机视觉(2)】

基于Python的OpenCV基础入门——视频的处理 视频OpenCV视频处理操作&#xff1a;创建视频对象判断视频是否成功初始化读取视频帧获取视频特征设置视频参数声明编码器保存视频释放视频对象 视频处理基本操作的代码实现&#xff1a; 视频 视频是由一系列连续的图像帧组成的。每一…

Spring—IoC

目录 1. IoC的提出 2. Spring容器 2.1. Spring容器实现原理 2.2. Spring组件 2.2.1 XML标签方式 2.2.2. 类注解方式 2.2.3. 方法注解方式 2.3. Spring容器分类 2.3.1. BeanFactory容器 2.3.2. ApplicationContext容器 2.3.3. WebApplicationContext容器 3. Spring中…

Srping 历史

一、History of Spring and the Spring Framework Spring came into being in 2003 as a response to the complexity of the early J2EE specifications. While some consider Java EE and its modern-day successor Jakarta EE to be in competition with Spring, they are …

idea启动报错:java.lang.NoClassDefFoundError: org/mybatis/logging/LoggerFactory

文章目录 一、问题二、解决方法 一、问题 问题描述&#xff1a;idea整合Mybatis-plus的时候&#xff0c;启动报错&#xff1a;java.lang.NoClassDefFoundError: org/mybatis/logging/LoggerFactory 二、解决方法 可能原因&#xff1a;仔细检查了一下&#xff0c;发现 mybati…

《王者荣耀》4月狂揽2.34亿美元 单日流水1亿美元 全球销量第二

易采游戏网5月24日消息&#xff0c;在刚刚过去的四月&#xff0c;全球手游市场迎来了一场收益的盛宴&#xff0c;其中《王者荣耀》以其惊人的吸金能力&#xff0c;以2.34亿美元的月收入在全球手游排行榜上位列第二。4月5日&#xff0c;这款由腾讯游戏开发的多人在线战斗竞技游戏…

C++相关概念和易错语法(14)(初始化注意事项、vector、编译器向上查找规则)

1.当我们在代码中想要终止运行的话&#xff0c;我们可以采用Ctrl C或Ctrl Z&#xff0c;其中^C代表杀进程&#xff0c;^Z设置结束2.编码表&#xff1a;我们目前比较熟悉的是ASCII码编码方式&#xff0c;但是我们发现平时使用的汉字无法通过ASCII编码&#xff0c;除此之外&…

自动化测试用例结构

标准的用例结构&#xff1a; 用力标题前提条件用例步骤预期结果实际结果 测试用例对比&#xff1a;

酷开系统 | 酷开科技把握智慧先机 AI赋能家庭场景

智慧化是当今世界科技发展的前沿领域之一。现在的智慧化&#xff0c;也正在逐步成为我们日常生活的一部分。电视系统也进入了数字化时代&#xff0c;AI的应用正在不断扩展&#xff0c;其潜力似乎无穷无尽。 酷开科技深耕人工智能技术&#xff0c;在提升语音体验、强化智能家居…

第二证券:新股申购配号数什么意思?

股配号数量便是我们参与抽签的数量&#xff0c;投资者申购新股之后&#xff0c;交易所会根据持有的股票市值进行配号。 投资者的市值越大&#xff0c;申购新股的配号越多&#xff0c;其中签机会越大。主板、创业板、科创板一个申购单位是500股&#xff0c;意味着1万元的市值有…

Java 定义类型处理MySQL point类型数据

1.三个类来处理 引入maven依赖 <!-- 引入 jts 库解析 POINT --><dependency><groupId>com.vividsolutions</groupId><artifactId>jts</artifactId><version>1.13</version></dependency>import javax.validation.constr…

【C++入门】—— C++入门 (下)_内联函数

前言&#xff1a;在了解完前面的C基础内容后&#xff0c;马上我们就要真正不如C的学习了&#xff0c;但在之前让我们最后了解最后一点点C入门知识&#xff01;来迟的520特别篇&#xff01; 本篇主要内容&#xff1a; 内联函数 auto关键字 范围for 指针空值nullptr C入门 1. 内联…

智慧医疗时代:探索互联网医院开发的新篇章

在智慧医疗时代&#xff0c;互联网医院开发正引领着医疗服务的创新浪潮。通过将先进的技术与医疗服务相结合&#xff0c;互联网医院为患者和医生提供了全新的互动方式&#xff0c;极大地提升了医疗服务的便捷性和效率。本文将深入探讨互联网医院的开发&#xff0c;介绍其技术实…

一键部署!QQ AI 聊天机器人!支持ChatGPT、文心一言、讯飞星火、Bing、Bard、ChatGLM、POE,多账号,人设调教

随着人工智能技术的不断发展&#xff0c;智能聊天机器人已经成为我们日常生活中不可或缺的一部分。ChatGPT作为一款强大的人工智能聊天模型&#xff0c;能够为我们提供高效、便捷的聊天体验。那么&#xff0c;如何将ChatGPT接入QQ&#xff0c;实现智能聊天新体验呢&#xff1f;…

OTP8脚-全自动擦鞋机WTN6020-低成本语音方案

一&#xff0c;产品开发背景 首先&#xff0c;随着人们生活质量的提升&#xff0c;对鞋子的保养需求也日益增加。鞋子作为人们日常穿着的重要组成部分&#xff0c;其清洁度和外观状态直接影响到个人形象和舒适度。因此&#xff0c;一种能够自动清洁和擦亮鞋子的设备应运而生&am…

局部直方图均衡化去雾算法

目录 1. 引言 2. 算法流程 3. 代码 4. 去雾效果 1. 引言 局部直方图算法是一种基于块的图像去雾方法&#xff0c;它将图像分割为若干个块&#xff0c;并在每个块内计算块的局部直方图。通过对各个块的直方图进行分析和处理&#xff0c;该算法能够更好地适应图像中不同区域的…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-16讲 EPIT定时器

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

再谈Google I/O 2024:开发者必看亮点

在2024年Google I/O大会上&#xff0c;谷歌发布了许多令人兴奋的新技术和工具。本文将重点介绍其中的三大亮点&#xff1a;新一代TPU、Gemma模型以及Firebase GenKit。这些工具和技术对于开发者来说&#xff0c;将会带来前所未有的便利和强大功能。 新一代TPU&#xff1a;Tril…

在MySQL数据库中的视图和事务。

视图 view 临时表 作用&#xff1a;优化多表查询的效率 可以将经常使用的连接查询结果使用视图进行保存&#xff0c;避免多次重复的笛卡尔积运算 MySQL数据库在多表查询的时候会自动进行笛卡尔积运算。 如果将来经常要用到某一个多表查询的结果就可以使用视图将这个结果…

Visual Studio中MP编译参数

MP通常与OpenMP&#xff08;Open Multi-Processing&#xff09;关联&#xff0c;它是用于多平台共享内存并行编程的一个API。 在编译C或C代码时使用OpenMP&#xff0c;通常需要特定的编译参数来启用这一功能。对于GCC和G编译器&#xff0c;这些参数包括&#xff1a; -fopenmp…

云手机在软件测试中的作用,为软件测试工程师减负

针对每家企业来说&#xff0c;对于即将上线的软件进行测试这一步骤是不可忽视的&#xff0c;这决定产品上线后的质量和口碑&#xff1b; 传统的的真机测试可能面临设备大量的采购&#xff0c;管理和维护的成本提高&#xff0c;现在不少企业都开始用云手机来代替真机&#xff0…