| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 457 人关注过本帖
标题:帮忙解释一下!!!
只看楼主 加入收藏
gyx8899
Rank: 2
等 级:论坛游民
帖 子:56
专家分:91
注 册:2010-2-2
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
帮忙解释一下!!!
#include <stdio.h>
 main()
 {
          union{                   /*定义一个联合*/
               int i;
               struct{             /*在联合中定义一个结构*/
                    char first;
                    char second;
               }half;
          }number;
          number.i=0x4241;         /*联合成员赋值*/
          printf("%c%c\n", number.half.first, mumber.half.second);
          number.half.first='a';   /*联合中结构成员赋值*/
          number.half.second='b';
          printf("%x\n", number.i);
          getch();
}
为什么 :   number.half.first='a';   /*联合中结构成员赋值*/
            number.half.second='b';
                                  与number.i的关系如何建立起来的?
搜索更多相关主题的帖子: 解释 
2010-07-04 18:27
死了都要C
Rank: 4
来 自:四川成都
等 级:贵宾
威 望:13
帖 子:1582
专家分:116
注 册:2006-12-7
收藏
得分:10 
number有个成员叫half  访问它需要这样: number.half

 number.half有个成员叫first  访问它需要这样: number.half.first


女施主``我给你``送茶来了```师太``你就从了老衲吧``
代码本天成~~~妙头偶得之```
2010-07-04 19:44
do8do8do8
Rank: 10Rank: 10Rank: 10
来 自:沙滩
等 级:贵宾
威 望:17
帖 子:366
专家分:1845
注 册:2010-7-2
收藏
得分:10 
楼主给我加分:
你出招,我就拆:
联合union{     int i;
               struct{  
                    char first;
                    char second;
               }half;
          }number;
这个联合的占的总内存空间,你猜猜会有多少个字节,答案是2个字节。
表面上是int 占 2 个字节,char 占1个字节,算起来也该占 4个字节。
但是实际上只有2个字节,给int赋值,实际上两个char都分享了数据,你一口,我一口。
给两个char赋值,其实就是两口子都白白给了int,赔了夫人又折兵。
为啥啊,为什么呢,你以为是小沈阳啊? 这是联合。
答题完毕,给分。

学C语言从底层开始,学编程从问题开始,一日学会C!!!
2010-07-05 09:29
快速回复:帮忙解释一下!!!
数据加载中...
 
   



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

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