荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: Begin (启明星), 信区: Program
标 题: Re: 再看
发信站: 荔园晨风BBS站 (Wed Nov 13 11:22:54 2002), 站内信件
编译器在考虑对齐问题时,在结构中插入空位以控制各成员对象的地址对齐。
double类型的结构成员要放在被4整除的地址,看看c语言书上讲sizeof的一章。
这样做主要是为了提高执行的效率,而对齐位的大小是可以调整的。
【 在 limt (晴转多云间阴有小到中雨局部大到暴雨) 的大作中提到: 】
: 我在linux下用gcc2.96试了一下,结果如下: ----看来真的是编译器的问题
: 在 wwwflycn (凡高.自杀) 的大作中提到: 】
: : 个人认为这说法还值得商榷:
: : struct T{
: : char i;
: : double k;
: : };
: : sizeof(T) == 16 //若是楼上得说法应该为12
: 这里真的是12=8+4
: : 我猜想应以结构内的字长最大的类型为分配单位
: : struct T2{
: : char i[9];
: : double k;
: : }
: : sizeof(T2) 果然为 24
: 这里是20 ?????
: : 但: struct T2{
: : char j;
: : T b;
: : };
: : sizeof(T2) == 24
: 这里是16 =12+4
: : 这种理解好像有点牵强.
--
Good programming is %99 sweat and %1 coffee.
※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 61.145.142.105]
[回到开始]
[上一篇][下一篇]
荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店