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

(8)结构体、共用体和枚举类型数据

1. 结构体、共用体的定义及区别,typedef 定义别名

结构体的定义

结构体是一种用户自定义的数据类型,它可以将不同类型的数据组合在一起。例如,定义一个表示学生信息的结构体:

// 定义结构体类型 struct Student
struct Student {char name[20];int age;float score;
};
共用体的定义

共用体也是一种用户自定义的数据类型,但它的所有成员共享同一块内存空间。例如,定义一个简单的共用体:

union Data {int int_value;float float_value;char char_value;
};
结构体与共用体的区别
  • 内存分配
    • 结构体的每个成员都有自己独立的内存空间,结构体所占内存大小是所有成员内存大小之和(考虑内存对齐)。例如,上述struct Student结构体,name数组占20字节,age占4字节,score占4字节(假设float占4字节),总共28字节(考虑内存对齐可能会有一些填充)。
    • 共用体的所有成员共享同一块内存,其大小等于占用内存最大的成员的大小。对于union Dataint可能占4字节,float占4字节,char占1字节,所以union Data的大小为4字节。
  • 数据存储和访问
    • 结构体中每个成员都可以独立存储和访问不同的值。例如,可以分别设置struct Student结构体中nameagescore的值。
    • 共用体在某一时刻只能存储其中一个成员的值,因为它们共享内存。当给一个成员赋值时,可能会覆盖其他成员的值。
使用 typedef 定义结构体、共用体别名
  • 结构体别名
typedef struct Student StudentInfo; // 现在 StudentInfo 就可以当作 struct Student 使用StudentInfo student1; // 等同于 struct Student student1;
  • 共用体别名
typedef union Data MyData;MyData data; // 等同于 union Data data;

2. 结构体和共用体数组、指针的定义和初始化,以及参数传递及应用

结构体数组和指针
  • 结构体数组定义与初始化
struct Student students[<
http://www.lryc.cn/news/473998.html

相关文章:

  • Jedis操作和springboot整合redis
  • 基于AI大模型的复杂扫描件PDF信息提取与规整
  • 为什么https先非对称加密,然后对称加密?
  • 【Coroutines】Full Understanding of Kotlinx.Corutines Framework
  • Python面向对象,实现图片处理案例,支持:高斯模糊、Canny边缘检测、反转边缘图像、生成手绘效果、调亮度......等等
  • SOLID - 依赖倒置原则(Dependency Inversion Principle)
  • 【.NET 8 实战--孢子记账--从单体到微服务】--需求拆分与规划
  • 在macOS的多任务处理环境中,如何平衡应用的性能与用户体验?这是否是一个复杂的优化问题?如何优化用户体验|多任务处理|用户体验|应用设计
  • Vscode配置CC++编程环境的使用体验优化和补充说明
  • 十个方法杜绝CAD图纸泄密风险!2024年图纸防泄密指南!「必看」
  • 技术干货|HyperMesh CFD功能详解:虚拟风洞 Part 1
  • 022集——统计多条线的总长度(CAD—C#二次开发入门)
  • 大模型重要技术系列三:高效推理
  • Android 刘海屏适配指南
  • 微信小程序服务通知
  • Ubuntu使用Qt虚拟键盘,支持中英文切换
  • 泰州农商行
  • 扫雷(C语言)
  • 【实践功能记录8】使用UseElementSize实现表格高度自适应
  • SMO算法 公式推导
  • nodejs包管理器pnpm
  • 【postman】工具下载安装
  • Java_Springboot核心配置详解
  • 太速科技-9-基于DSP TMS320C6678+FPGA XC7V690T的6U VPX信号处理卡
  • 在线UI设计工具:创意与效率的结合
  • 【MyBatis源码】SqlSessionFactoryBuilder源码分析
  • Percona XtraBackup数据备份方案
  • 聚“芯”而行,华普微亮相第五届Silicon Labs Works With大会
  • Java 用户随机选择导入ZIP文件,解压内部word模板并入库,Windows/可视化Linux系统某麒麟国防系统...均可适配
  • 【C++】C++17结构化绑定、std::optional、std::variant、std::any