C语言 struct结构体字节对齐的理解

结构体 字节对齐的好外:

  提升读取的效率
  代码如下:
  结构体:
    struct TestByte
    {
    	int age1; //32位 4个字节
    	long age2;//32位 4个字节
    	short ag3; //32位 2个字节
    
    }testByte1;

主函数:

void main() {

	//结构体字节对齐 演示 如果没有字节对齐的话 应该输入的是 sizeof(int) +sizeof(long)+sizeof(short)=10
	printf("%d", sizeof(testByte1)); //最宽基本数据类型 是4
									// int 4  long 4  short 2  相加等于 10 所以输出 12

	getchar();

}

明明是 sizeof(int) +sizeof(long)+sizeof(short)=10 为什么为输出 12
结构体字节对齐的意思是:

必须是最宽基本数据类型的整数倍 并且这个整数部 要大于(最宽基本数据类型倍数的最小值)或等于 所有数据类型大小之和

仔细体会上面 结构体字节对齐的意思你就明白了 最宽基本数据类型的长度是 4 因为所有数据类型相加是 4+4+2 = 10 那么4*3 保证了大于 4+4+2 并且是4的倍数

你可能感兴趣的:(C开发)