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

c/c++ 结构体、联合体、枚举

结构体

结构体内存对齐规则:

1、结构体的第一个成员对齐到结构体变量起始位置偏移量为0的地址处

2、其他成员变量要对齐到某个数字(对齐数)的整数倍的地址处。

对齐数:编译器默认的一个对齐数与该成员变量大小的较小值。

vs 中默认对齐数是8

Linux中gcc没有对齐数,对齐数就是该成员变量自身大小。

3、该结构体总大小最大对齐数(结构体中每个成员都有一个对齐数,所有对齐数最大的)整数倍。

4、如果嵌套了结构体,嵌套的结构体成员对齐到自己内部成员最大对齐数的整数倍,然后结构体的整体大小就是所有对齐数(含嵌套结构体成员对齐数)的整数倍。

 运用offsetof---宏 (需要包含头文件#include<stddef.h>)---->计算结构体成员相较于起始位置的偏移量。

联合体

联合体也是由一个或者多个成员变量来构成,这些成员可以是不同类型,但是编译器只是为最大成员分配足够的空间,联合体的特性就是所有成员共用一块空间,给联合体其中一个成员赋值,其他成员也会相应变动。

可以发现联合体有个特点,就是所有的成员共用一个空间,那么对一个变量进行修改,也会影响另外一个变量。

枚举:

枚举优点:

增加代码的可读性和可维护性,使用起来也较为方便,可以一次性定义多个常量。 

http://www.lryc.cn/news/260569.html

相关文章:

  • stl模板库成员函数重载类型混肴编译不通过解决方法
  • MySQL——表的约束
  • cordic 算法学习记录
  • 【STM32】电机驱动
  • csp 如此编码 C语言(回归唠嗑版)
  • 或许是全网最全的延迟队列
  • C语言结构体小项目之通讯录代码实现+代码分析
  • tp5 rewrite nginx重写
  • .NET 反射优化的经验分享
  • 使用opencv的Sobel算子实现图像边缘检测
  • 亿欧网首届“元创·灵镜”科技艺术节精彩纷呈,实在智能AI Agent智能体展现硬核科技图景
  • 宝塔面板快速搭建本地网站结合内网穿透实现远程访问【无需公网IP】
  • css的Grid布局
  • Python接口测试框架选择之pytest+yaml+Allure!
  • 03-详解Nacos注册中心的配置步骤和功能
  • 微服务学习:Nacos微服务架构中的服务注册、服务发现和动态配置Nacos下载
  • 逆向经历回顾总结
  • 企业IT安全:内部威胁检测和缓解
  • Linux 服务器较为强大的运维及管理脚本实现(支援:本机线上操作)
  • 【数据结构】插入排序,希尔排序,选择排序,堆排序,冒泡排序
  • MyBatis--07--启动过程分析、SqlSession安全问题、拦截器
  • Qt基础之四十二:QMap、QHash的实现原理和性能对比
  • 虚幻学习笔记12—C++类的实例化
  • 【《漫画算法》笔记】快速排序
  • C++如何通过调用ffmpeg接口对H265文件进行编码和解码
  • 8位LED流水灯设计
  • eclipse连接mysql数据库(下载eclipse,下载安装mysql,下载mysql驱动)
  • 【信息学奥赛】拼在起跑线上,想入道就别落下自己!
  • Python 进程池Pool Queue,运行不出来结果!
  • yolov8实战第二天——yolov8训练结果分析(保姆式解读)