0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

结构体成员的顺序会影响结构体的大小吗

学益得智能硬件 来源:学益得智能硬件 2024-11-25 16:24 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

相同的结构体成员,如果把顺序调整一下,会不会影响结构体的大小?

答案是会的,这主要跟字节对齐有关。

比如这样的结构体,前面两个是 char 类型,后面跟上一个 int 类型。

struct A
{
    char a;
charb;
intc;
};

它在内存中的排序是这样的,第一个 char 占 1 个字节,紧接着第 2 个 char 也占 1 个字节。

因为最后是个 int 类型,所以中间还要空 2 个字节。要保证 int 的偏移是 4 的整数倍。

结构体最终长度就是 8 个字节。

下面调整一下,把第 2 个 char 放到 int 的后面。

struct B
{
    char a;
    int b;
    char c;
};

第一个 char 任然占 1 个字节,由于后面是 int,中间还得空 3 个字节。

最后的 char 占 1 个字节。

由于 int 的存在,结构体的总长度必须是 4 的整数倍,所以结果就是 12。

成员的顺序一旦变了,他们在内存中的排布方式就会不一样,结果也就不同。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 内存
    +关注

    关注

    9

    文章

    3252

    浏览量

    76569
  • 结构体
    +关注

    关注

    1

    文章

    131

    浏览量

    11422

原文标题:结构体成员的顺序会不会影响结构体的大小

文章出处:【微信号:学益得智能硬件,微信公众号:学益得智能硬件】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    关于C语言对齐的一些总结

    1. 对齐的目的是什么? 提供访问效率---放大对齐 压缩存储空间---紧凑对齐 2. 对齐的类型有哪些? 自然对齐 :结构默认按 最大基础类型成员大小对齐(比如最大
    的头像 发表于 05-08 11:23 432次阅读

    GLAD应用:全息光栅模拟

    。从而用于模拟全息记录介质中形成的梯度折射率分布。全息结构一旦形成,就可以在传输过程中将一束入射光波逐渐转换成形成体全息结构的另一束光波。两束光波之间的能量传递转换效率与全息
    发表于 04-24 08:25

    认识一下广州爱智德工控一机的整机结构

    爱智德工控一机的结构与选型秘诀:从坚固耐用的金属外壳到灵敏的触摸屏,再到高性能主板和稳定电源,了解这些关键部件如何适应不同工业场景,助您做出精准选择。
    的头像 发表于 03-24 17:11 694次阅读

    小艺开放平台鸿蒙智能开发智能配置-基础信息

    。 图标:上传的图标建议比例1:1正方形图片,大小不超过5M,支持png、jpeg、jpg不透明背景。 智能名称:支持编辑智能名称,智能名称为必填项,不能编辑为空。 智能
    发表于 02-02 16:47

    10个例子代码,C语言结构的高级

    (\"Flag 3: %dn\", f.flag3); return 0; } 在这个例子中,我们使用了位字段来定义一个结构,其中每个成员变量都指定了所占用的位数。这样
    发表于 01-05 06:32

    一个经典的结构和联合体共用的实例

    结构 结构占用的内存大小,首先和编译器的系统位数有关系,类似于CPU是 64 bits 还是 32 bits 的情形;其次,
    发表于 12-16 07:14

    结构声明与定义

    1、声明 结构的声明使用struct关键字,如果我们想要把我们的学籍信息组织一下的话,可以这样表示: struct Info { unsigned long identifier;//学号
    发表于 12-11 07:52

    typedef结构使用

    虽然结构的出现能够让我们有一个更科学的数据结构来管理数据,但是每次使用结构都需要struct...,未免显得有些冗长和麻烦。有了type
    发表于 12-08 07:04

    共用声明

    共用也称联合体。 和结构还是有点像: union 共用名称 { 成员1; 成员2
    发表于 12-05 07:24

    为什么不建议用匿名结构

    说起匿名结构,想必大家第一感觉就是看着好高大上的名字,但实际上也就那样。 typedef struct { union { struct { uint8_t bit_0:1
    发表于 12-04 07:39

    C语言的编程技巧

    一个成员是一个未知大小的数组,适用于动态分配内存并关联一个可变长度的数组。‌ ‌3、匿名结构和联合体‌:C语言允许在结构
    发表于 11-27 06:46

    控制结构介绍

    1. 顺序结构:按照代码的书写顺序,逐行执行程序。这是最基本的程序结构。 2. 选择结构:根据条件判断的结果,选择执行不同的代码块。常见的
    发表于 11-24 06:43

    C语言结构使用

    型的数据组合。 结构的声明与定义 结构的声明一般形式为: c struct 结构名{
    发表于 11-12 08:30

    定义IO初始化结构

    由上述IOPORT相关功能的枚举类型我们可以知道,在对IOPORT模块进行初始化时需要根据情况配置它们。因此我们定义一个IOPORT初始化的结构类型IOPORT_Init_t,它的成员包括了由上述所有枚举类型所声明的变量,因此
    的头像 发表于 07-16 16:26 1651次阅读

    渗压计在混凝土结构中的安装指南

    在现代土木工程和岩土工程中,渗压计是监测混凝土结构体内孔隙水压力变化的重要工具。南京峟思公司生产的渗压计因其高精度和可靠性而被广泛应用于各种工程监测项目中。一、渗压计在混凝土结构中的应用价值渗压计
    的头像 发表于 05-28 10:55 809次阅读
    渗压计在混凝土<b class='flag-5'>结构</b><b class='flag-5'>体</b>中的安装指南