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 …

nginx 配置stream模块代理并开启日志配置

前言 nginx 1.20.1 nginx从1.9.0开始,新增加了一个stream模块 确保nginx 安装时开启stream模块 ./configure \ …… \ --with-stream \ --with-stream_ssl_module \ 修改nginx.conf #增加stream配置&#xff0c;开启stream模块 stream {log_format basic $remote_addr [$…

stm32 作为从机, fpga 作为主机,进行 spi 通信

stm32 作为从机, fpga 作为主机,进行 spi 通信 STM32和FPGA之间的SPI通信是直连形式。使用FPGA读取传感器的值,传输到STM32中进行计算。 STM32是将SPI接受过来的数据存储到DMA中。 #include "SPI_DMA.h" #include <stm32f10x.h> uint8_t spi_buf[4];//FP…

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;除此之外&…

前端canvas项目实战——在线图文编辑器:序

目录 前言一、 博主是谁&#xff1f;二、 关于本专栏1. 本专栏涉及的技术栈2. 专栏适合谁来学习&#xff1f;3. 你可以从专栏学到什么&#xff1f;4. 系列文章索引 三、 付费信息后记 前言 很高兴&#xff0c;今天我又为自己设定了一个目标&#xff1a;带领大家从入门HTML5中的…

自动化测试用例结构

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

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

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

(1)无线电失控保护(二)

文章目录 前言 4 参数配置 5 测试 6 使用接收器设置飞行模式(

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

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

Scrapy 从创建到运行

Scrapy是一个强大的Python框架&#xff0c;专门用于构建网络爬虫。 步骤1&#xff1a;安装Scrapy 首先&#xff0c;你需要安装Scrapy框架来进行后续操作。以下是具体操作步骤&#xff1a; 1、使用pip命令安装Scrapy&#xff1a; pip install scrapy 步骤2&#xff1a;创建S…

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

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

MySQL的数据类型之文本类型

目录 文本类型类型&#xff1a; CHAR(size) VARCHAR(size) TEXT TINYTEXT, MEDIUMTEXT, LONGTEXT BLOB, MEDIUMBLOB, LONGBLOB ENUM 在mysql中&#xff0c;常用数据类型有三种&#xff1a; 1、文本类型&#xff1b; 2、数字类型&#xff1b; 3、日期/时间类型&#xff1b; …

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

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

星戈瑞CY3-COOH染料的稳定性、荧光特性

CY3-COOH染料&#xff0c;作为一种多功能的荧光标记试剂&#xff0c;在生物医学研究和荧光成像技术中应用。其稳定性和荧光特性使得它在科研实验使用。 CY3-COOH染料的稳定性 CY3-COOH染料以其稳定性而应用。首先&#xff0c;它展现出了良好的化学稳定性&#xff0c;不易受到环…

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

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

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

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