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