| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 532 人关注过本帖
标题:关于struct 和union的一些小问题求教
取消只看楼主 加入收藏
S_12s
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:110
专家分:670
注 册:2010-7-21
结帖率:100%
收藏
已结贴  问题点数:50 回复次数:3 
关于struct 和union的一些小问题求教
以下程序在VC6.0中的结果:
sizeof(tests)=20
sizeof(A)=16
sizeof(B)=24
Press any key to continue
在Win-TC中的结果:
sizeof(tests)=12
sizeof(A)=11
sizeof(B)=11

谁能解释一下??
程序代码:
#include <stdio.h>

struct test
{

    int m1;
    char m2;
    float m3;
    union uu
    {
        char u[5];
        int u2[2];
    }ua;
}tests;

struct A

{

    char a;

    int b;

    double c;

}A;
                                        /*A和B只是变量的位置顺序不一样*/
struct B
{

    int b;

    double c;

    char a;

}B;



int main()
{
    printf("sizeof(tests)=%d\n",sizeof(tests));
    printf("sizeof(A)=%d\n",sizeof(A));
    printf("sizeof(B)=%d\n",sizeof(B));
    return 0;

}

搜索更多相关主题的帖子: struct union 
2010-08-28 19:30
S_12s
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:110
专家分:670
注 册:2010-7-21
收藏
得分:0 
那它是怎样对齐的呢??为什么sizeof(A)和sizeof(B)不一样呢??
2010-08-28 19:55
S_12s
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:110
专家分:670
注 册:2010-7-21
收藏
得分:0 
5楼的大侠可以说明一下为什么在struct B中对a分配完之后是扩充到8X,而不是4X?这有什么规则吗?
还有#pragma pack(1)的作用又是什么呢??
2010-08-28 21:18
S_12s
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:1
帖 子:110
专家分:670
注 册:2010-7-21
收藏
得分:0 
7楼的大侠令我思路开朗了不少,。虽然对nop 90这一东西不明白,但下面的内容还是可以理解的。谢谢了!
2010-08-28 22:18
快速回复:关于struct 和union的一些小问题求教
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.012382 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved