当前位置: 代码迷 >> C语言 >> 出道题 大家作下 能得出答案的帮忙解释下!!
  详细解决方案

出道题 大家作下 能得出答案的帮忙解释下!!

热度:101   发布时间:2007-11-27 17:01:21.0
提示: 作者被禁止或删除 内容自动屏蔽
2007-11-27 09:01:21
joker39

等 级:新手上路
威 望:1
帖 子:78
专家分:0
注 册:2007-9-6
  得分:0 
原来结构里面的变量有这种坏习惯啊 乱占空间
----------------解决方案--------------------------------------------------------
看看
没想到结构有这样的问题.
----------------解决方案--------------------------------------------------------
回复 8# 的帖子
不好意思,我觉的可能还是有点问题
typedef struct
{
    int a;
    float b;
    char c;
    double d;
} NODE;
main()
{
    printf("%d\n",sizeof(NODE));
}
输出结果是20
不是4 x 8 =32
----------------解决方案--------------------------------------------------------
#include <stdio.h>
int main()
{
    struct a
    {
        char c;
        int n;
    };
    struct a k;
    printf("%d\n",sizeof(k.c));
    printf("%d\n",sizeof(k.n));
    getch();
    return 0;
}
输出
1
4
----------------解决方案--------------------------------------------------------
原帖由 [bold][underline]forrestx[/underline][/bold] 于 2007-12-1 17:06 发表 [url=http://bbs.bc-cn.net/redirect.php?goto=findpost&pid=1126013&ptid=188724][/url]
不好意思,我觉的可能还是有点问题
typedef struct
{
    int a;
    float b;
    char c;
    double d;
} NODE;
main()
{
    printf("%d\n",sizeof(NODE));
}
输出结果是20
不是4 x 8 =32 ...



如果系统是32位的话,CPU 最多每次读取32位长的数据。
以CPU能够读取的速度最快的数据对齐。

64位系统没用过。(它上面的编译器会怎么做就不知道了)

//
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽
2007-12-03 05:52:38
wangyinshiwo

等 级:新手上路
帖 子:75
专家分:0
注 册:2007-11-9
  得分:0 
看不明白啊!都是高手。

[[italic] 本帖最后由 wangyinshiwo 于 2007-12-3 14:55 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽
2007-12-03 06:40:44
wangyinshiwo

等 级:新手上路
帖 子:75
专家分:0
注 册:2007-11-9
  得分:0 
是我忘了写,但是你还得帮我解决哦!我写在了我的论坛。

[[italic] 本帖最后由 wangyinshiwo 于 2007-12-3 14:58 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
  相关解决方案