为了账号安全,请及时绑定邮箱和手机立即绑定

【备战春招】第3天-C01结构体及相关

标签:
C
  • 课程名称:Linux C语言结构体
  • 课程链接:https://www.imooc.com/learn/409
  • 章节名称:
    • 第4章:共用体
      • 4-1 共用体
    • 讲师姓名:雷过就跑
  • 时间:2023-02-07 23:30

课程内容

  • 共用体:关键字union
    • 作用:让几个不同类型的变量,共享同一个内存地地
    • 好处:节省空间
    • 缺点:同一时刻,仅能存取一个成员
    • 其长度,是其成员类型中最大的长度的长度值
  • 结构体空间大小问题
    • 这里面涉及到一字节对齐问题,这个对齐可以帮助计算机快速读写
    • 结构体空间大小计算公式
      • 结构体中最后一个成员的偏移量,加该成员大小,再加上填充的字节数
      • 偏移量:某一个成员的实际地址和这个结构体首地址的距离
      • struct data {int a; char b; int c;}
        • 结构体在进行字节对齐的时候,有这样一个准则,每个成员相对于首地址的偏移量,都要是当前成员所占内存大小的整数倍,如果不是整数倍就要加上填充字节
        • 成员a的偏移量就是0,因为是第一个成员
        • 成员b的偏移量是4,其本身大小为1字节,4是1的整数倍,可以不用填充字节
        • 成员c的偏移量是5,其本身大小为4,5不是其整数倍,为了满足整数倍关系,要在b成员后面填充字节,数量是3字节,从而使用c的偏移量为8,8是4的整数倍
        • 最后还要看结构体总大小,是不是结构体中最宽的成员大小的整数倍,如果不是要在最后一成员后填充字节,从而满足整数倍关系

学习心得

没想到结构体的大小计算模式这么复杂
共用体
共用体成员地址

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
JAVA开发工程师
手记
粉丝
9
获赞与收藏
1

关注作者,订阅最新文章

阅读免费教程

  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消