继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

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

taoy
关注TA
已关注
手记 94
粉丝 9
获赞 1
  • 课程名称: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的整数倍
        • 最后还要看结构体总大小,是不是结构体中最宽的成员大小的整数倍,如果不是要在最后一成员后填充字节,从而满足整数倍关系

学习心得

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

打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP