C语言结构体字节对齐简单计算方法

博客介绍了C语言中数据类型的字节对齐情况,普通数据类型如整型、字符型、double在32位操作系统下有各自的对齐字节数。结构体的字节对齐计算方式不同,主要依据“有效对齐数”,并通过具体结构体示例展示了在32位和64位操作系统下的字节大小计算。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.在C语言里面每一种数据类型都有字节对齐比如在32位操作系统下:整型的自身对齐数就是 4 字节,字符型就是 1 字节,double就是 8 字节。

但是结构体的计算方式就和普通的数据类型不一样。

    在C语言里面字节对齐的方式主要根据“有效对齐数”来确定,那么有效对齐数是怎杨确定的呢?  

  在结构体里面::: 有效字节对齐数 = (自身对齐数 < 最大字节)?(自身对齐数):(最大字节);

  自身对齐数 = 4字节(32位操作系统);(8 字节为32位操作系统)。

  最大字节数 = 结构体里面最大的一个数据类型所占的字节数。

列:struct test{

    char a;

    int  a;

    short  c;

  }d;

sizeof(d) == ? ; //在32位操作系统下为12字节,64位操作系统下也为12字节。(每一次都开4个字节)

  struct  test2{

    char a;

    double b;

    short c;

  }d;

sizeof(d) == ? ;// 在32位操作系统下为16字节(每一次开4个字节),在64位操作系统下为24字节(每一次开8个字节)。

  

转载于:https://www.cnblogs.com/hukblog/p/9541628.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值