当前位置: 代码迷 >> C语言 >> 关于结构体和联合的问题
  详细解决方案

关于结构体和联合的问题

热度:49   发布时间:2008-03-11 22:18:10.0
关于结构体和联合的问题
#include<stdio.h>
void main()
{
    union exx
    {
        int a, b;
        struct
        {
            int c,d;
        }pp;
    }e={30};
    printf("%d,%d,%d,%d,%d\n",e.a,e.b,e.pp,e.pp.c,e.pp.d);
    e.b=e.a+20;
    printf("%d\n",e.b);
    e.pp.c=e.a+e.b;
    e.pp.d=e.a*e.b;
    printf("%d,%d\n",e.pp.c,e.pp.d);
}
运行结果是
30,30,30,0,30
50
100,10000
想请问一下 e.a,e.b,e.pp,e.pp.c,e.pp.d 初始的值是怎么来的?
搜索更多相关的解决方案: 结构体  

----------------解决方案--------------------------------------------------------
变量没有赋值,变量里面的数值是随机的.
----------------解决方案--------------------------------------------------------
赋初值了啊...楼上别乱说
----------------解决方案--------------------------------------------------------
union是所有的玩意存在同一个内存地址中的...楼主好好体会下...呵呵
----------------解决方案--------------------------------------------------------
所有的变量公用一个内存..好像你引用了不同变量其实是一个内存空间.....
----------------解决方案--------------------------------------------------------
违反规则,共用体变量不允许初始化呀!
我的教材不对.
----------------解决方案--------------------------------------------------------
union exx
    {
        int a, b;
        struct
        {
            int c,d;
        }pp;
    }e={30};

e={30};
定义了一个叫e的union,然后马上赋值30...的确没初始化,呵呵
----------------解决方案--------------------------------------------------------
回复 2# 的帖子
要是随机的话 值是有变化的 也不会与开始e={30}有关系啊
----------------解决方案--------------------------------------------------------
回复 7# 的帖子
那要是没初始化 那么e.a,e.b,e.pp,e.pp.c,e.pp.d的值是怎么来的?
为什么e.pp.c是0,而e.pp.d的值是30?
----------------解决方案--------------------------------------------------------
回复 6# 的帖子
可以对第一个变量初始化啊
----------------解决方案--------------------------------------------------------
  相关解决方案