从0开始学习C++ 第十三课:结构体和联合体

第十三课:结构体和联合体

学习目标:

  • 理解结构体的基本概念和如何定义结构体。
  • 学习如何使用结构体来组织相关数据。
  • 了解联合体的概念及其与结构体的不同点。

学习内容:

  1. 结构体

    • 概念: 结构体是C++中用于表示一组相关数据的复合数据类型。它允许将不同或相同类型的数据项组织为一个单一的数据类型。
    • 代码示例:
      #include <iostream>
      #include <string>// 定义一个结构体来存储学生信息
      struct Student {std::string name;int age;float gpa;
      };int main() {// 创建一个Student结构体的实例Student student1;student1.name = "Alice";student1.age = 20;student1.gpa = 3.8f;// 访问并输出学生信息std::cout << "Student Name: " << student1.name << std::endl;std::cout << "Student Age: " << student1.age << std::endl;std::cout << "Student GPA: " << student1.gpa << std::endl;return 0;
      }
      
    • 预计输出效果:
      Student Name: Alice
      Student Age: 20
      Student GPA: 3.8
      
    • 使用场景: 结构体适合用于将一组逻辑上相关的数据项组织在一起,比如学生的记录、产品的目录等。
  2. 联合体

    • 概念: 联合体是一种特殊的数据类型,允许在相同的内存位置存储不同的数据类型。联合体的大小等于其最大成员的大小。
    • 代码示例:
      #include <iostream>// 定义一个联合体,可以存储整数、浮点数或字符
      union Data {int i;float f;char c;
      };int main() {Data data;data.i = 10;std::cout << "Data as integer: " << data.i << std::endl;data.f = 220.5;std::cout << "Data as float: " << data.f << std::endl;// 注意:现在不能再使用data.i来获取整数,因为最后一次赋值是浮点数data.c = 'A';std::cout << "Data as char: " << data.c << std::endl;// 注意:现在data.f也不是有效的,因为最后一次赋值是字符return 0;
      }
      
    • 预计输出效果:
      Data as integer: 10
      Data as float: 220.5
      Data as char: A
      
    • 使用场景: 当你需要在同一时间只存储一个项,但这个项可能是多种不同的类型中的一个时,使用联合体可以节省内存。

练习题: 编写一个C++程序,定义一个名为Rectangle的结构体,包含长(width)和高(height)两个成员。在main函数中创建一个Rectangle实例,并编写一个函数来计算矩形的面积。输出这个矩形的面积。

答案:

#include <iostream>// 定义Rectangle结构体
struct Rectangle {float width;float height;
};// 计算矩形面积的函数
float calculateArea(const Rectangle& rect) {return rect.width * rect.height;
}int main() {// 创建Rectangle实例Rectangle myRect;myRect.width = 5.5f;myRect.height = 10.0f;// 计算并输出面积float area = calculateArea(myRect);std::cout << "The area of the rectangle is: " << area << std::endl;return 0;
}

预计输出效果:

The area of the rectangle is: 55

目录
第十四课:类和对象

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

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

相关文章

Shopee夏季选品策略:吸引消费者,提高销售的10个有效方法

在Shopee平台上进行夏季选品时&#xff0c;卖家需要采取一些策略来吸引消费者并提高销售。本文将介绍十个有效的方法&#xff0c;帮助卖家在夏季市场做好准备&#xff0c;提供符合季节需求的产品&#xff0c;从而提高销售业绩。 先给大家推荐一款shopee知虾数据运营工具知虾免…

Vue-32、Vue单文件组件

1、School.vue <template><h1>{{schoolName}}</h1><h2>{{address}}</h2><button click"showname">点我提示学校名</button> </template> <!----> <script>export default {name: "School",d…

System.Data.SqlClient.SqlException:“在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误

目录 背景: 过程: SQL Express的认识: 背景: 正在运行程序的时候&#xff0c;我遇到一个错误提示&#xff0c;错误信息如下&#xff0c;当我将错误信息仔细阅读了一番&#xff0c;信息提示的很明显&#xff0c;错误出现的来源就是连接数据库代码这块string connStr "s…

C# 实现 希尔密码

希尔密码&#xff08;也称为Hill Cipher&#xff09;是一种经典的对称密码算法&#xff0c;用于加密和解密文本。它由美国数学家莱斯利麦保尔希尔&#xff08;Leslie McBride Hill&#xff09;于1929年提出。 希尔密码基于线性代数和矩阵运算的原理。它将明文划分为若干个长度为…

【Linux工具篇】编辑器vim

目录 vim的基本操作 进入vim(正常模式&#xff09; 正常模式->插入模式 插入模式->正常模式 正常模式->底行模式 底行模式->正常模式 底行模式->退出vim vim正常模式命令集 vim插入模式命令集 vim末行模式命令集 vim操作总结 vim配置 Linux编译器…

如何从软硬件层面优化MySQL?

如何从软硬件层面优化MySQL? 在软件方面&#xff0c;数据库性能取决于很多因素&#xff0c;比如表设计&#xff0c;查询语句以及数据库配置等。在硬件方面&#xff0c;则主要取决于CPU和IO操作。作为一名软件开发者&#xff0c;需要我们从现有的软硬件配置中获得最佳的数据库…

服务器的异步通信——RabbitMQ

目录 一、同步通信 VS 异步通信 二、MQ——消息队列 RabbitMQ RabbitMQ安装 RabbitMQ的整体架构 常见消息模型 基本消息队列&#xff08;BasicQueue&#xff09; 工作消息队列&#xff08;WorkQueue&#xff09; 发布、订阅&#xff08;Publish、Subscribe&#xff0…

CSS文本外观属性内容(知识点1)

知识引入 使用HTML可以对文本外观进行简单的控制&#xff0c;但是效果并不理想&#xff0c;为此CSS提供了一系列的文本外观样式属性&#xff0c;具体如下。 color:文本颜色 color属性用于定义文本的颜色&#xff0c;其取值方式有以下三种。 &#xff08;1&#xff09;预定义…

爬取的数据可以入表吗?怎样入表?

合规是数据入表的前提。当前爬虫数据是非常敏感的&#xff0c;因为爬虫极容易造成两大不合规的问题&#xff1a;一是没有经过个人同意获取数据&#xff0c;二是爬取的数据里可能含有个人敏感信息也是一个问题。现在法律对于这部分非常严苛&#xff0c;如果企业里有50条未获得授…

前端基础(三十八):iframe通信、浏览器跨窗口通信

iframe通信 - MessageChannel <!-- index.html --> <h3>MessageChannel</h3> <input id"input" type"text" oninput"handleInput(this.value)" /> <hr /> <iframe src"./demo.html"></iframe&…

HCIA——25FTP 的工作原理、功能、TFTP、控制连接、数据连接的选择、解答

学习目标&#xff1a; 计算机网络 1.掌握计算机网络的基本概念、基本原理和基本方法。 2.掌握计算机网络的体系结构和典型网络协议&#xff0c;了解典型网络设备的组成和特点&#xff0c;理解典型网络设备的工作原理。 3.能够运用计算机网络的基本概念、基本原理和基本方法进行…

第2章-OSI参考模型与TCP/IP模型

目录 1. 引入 2. OSI参考模型 2.1. 物理层 2.2. 数据链路层 2.3. 网络层 2.4. 传输层 2.5. 会话层 2.6. 表示层 2.7. 应用层 3. 数据的封装与解封装 4. TCP/IP模型 4.1. 背景引入 4.2. TCP/IP模型&#xff08;4层&#xff09; 4.3. 拓展 1. 引入 1&#xff09;产…

char const char* 类型的实参与LPCWSTR 类型的形参类型不兼容

点击项目->项目属性 在高级中点击字符集->选择使用多字节字符集 ———————————————————————— 如果还是显示报错&#xff0c;关闭项目&#xff0c;重新进一下项目&#xff0c; 我的当时就是找了好久&#xff0c;都是以上方法&#xff0c;然后重新…

业务连续性演练在软件中的重要性

随着现代社会对信息技术的依赖程度不断增加&#xff0c;软件系统的业务连续性变得至关重要。业务连续性演练成为保障软件系统在各种不可预测情况下能够持续运行的关键措施。本文将探讨业务连续性演练在软件中的重要性以及它为组织提供的价值。 1. 灾难恢复能力的验证 业务连续性…

1 月 22日算法练习

模拟 卡片 题目描述&#xff1a; 本题为填空题&#xff0c;只需要算出结果后&#xff0c;在代码中使用输出语句将所填结果输出即可。 小蓝有很多数字卡片&#xff0c;每张卡片上都是数字0到9。小蓝准备用这些卡片来拼一些数&#xff0c;他想从1开始拼出正整数&#xff0c;每拼…

5G+物联网:连接万物,重塑智慧社区,开启未来生活新纪元,助力智慧社区的革新与发展

一、5G与物联网&#xff1a;技术概述与基础 随着科技的飞速发展&#xff0c;第五代移动通信技术&#xff08;5G&#xff09;和物联网&#xff08;IoT&#xff09;已经成为当今社会的热门话题。这两项技术作为现代信息社会的核心基础设施&#xff0c;正深刻地改变着人们的生活和…

Open3D 与 Point Cloud 处理

点云基础3D数据结构点云采集方法点云处理框架点云操作 Open3D基础操作 点云基础 3D数据结构 点云&#xff08;Point Cloud&#xff09;&#xff1a; 点云是由一组离散的点构成的三维数据集合&#xff0c;每个点都包含了坐标信息 (x, y, z) 、颜色 (RGB)、类别 (cls)、强度值等…

Windows如何开启telnet

打开控制面板-----点击程序 启用windows功能 勾线telnet

pytest+allure 生成中文报告

背景 已安装pytestallure&#xff0c;生成的报告是英文 allure生成中文报告 参考&#xff1a;allure report 报告中文化及其它优化 方法1&#xff1a;直接在报告中切换中文 方法2&#xff1a;依赖系统中文语言 创建一个setting.js 文件在index.html 同级目录 // 尝试从 l…

两千字讲明白java中instanceof关键字的使用!

写在开头 在过往的内容中&#xff0c;我们讲了不少的Java关键字&#xff0c;比如final、static、this、super等等&#xff0c;Java中的关键字非常之多&#xff0c;下图是整理的关键字集合 而我们今天要学习的就是其中的instanceof关键字&#xff01; instanceof的定义 inst…