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

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个字节)。

  

猜你喜欢

转载自www.cnblogs.com/hukblog/p/9541628.html