在缺省情况下,编译器为了让程序跑得跟快,减少CPU读取数据的指令周期,对结构体的存储进行了优化, 比如:如下结构体 struct s { char ch; int i; }; 虽然变量ch本身只有1个字节,但实际上却占用掉了4个字节,为的是让第二个int型成员i的地址能够被4整除.因此实际占用的是8个字节,sizeof(s) = 8. 一般地,可以通过下面的方法来改变缺省的对界条件:使用伪指令#pragma pack (n),C编译器将按照n个字节对齐.使用伪指令#pragma pack (),