笔试的时候经常遇到问一个结构体大小的问题。
个人觉得这种考题很撤d。结构体大小于编译器和编译参数有关。
在不标明编译器和编译参数的情况下,这个大小是无法确定的。
本人自己用VC++6.0比较多,本想找vc6.0的官方资料,可惜没有找到。
一下是自己总结的一些结论。
经过测试,没有发现例外。但这并不能说明结论是正确的。请大家留意。
1. 变量按声明顺序在内存中排列
2. 变量只能放在自己类型宽度的整数倍上
3. 内部类型的宽度和sizeof(内部类型)的大小相等
4. 自定义类型的宽度为该类型内部的变量的宽度的最大值。
5. 类型的大小为类型宽度的整数倍。
类型宽度可以修改。
# pragma pack(8) 就定义了类型的最大宽度为8
# pragma pack(1) 类型的最大宽度为1
大家可以自己试试
这是设置 # pragma pack(1) 的结果
运行环境 xp sp3 vc++6.0