黑马程序员技术交流社区

标题: C的共用体 [打印本页]

作者: 起个名老说太长    时间: 2016-4-6 22:36
标题: C的共用体
大家都知道结构体,或者结构体指针,这些相信基础班的老师没少讲用大白话说就是一个糖罐里面装了几种糖(吃货一般都这么比喻,例如我)
那么这个糖罐就是一个结构体,糖罐里面的糖就是这个结构体的成员
糖罐只能装糖,那么糖罐里面的糖必定就是类似的,而且都能吃的
所以结构体的成员必定也是相关联的
不然不是糖果干嘛装到一个糖罐里面,难道装盐 ???
举个例子
struck  Date  //一个表示日期的结构体
{
   int  day ;
   int  month;
   int  year ;
   // 要是在这个结构体里面增加一个 int  age; 或者 int money ;  客官怎么想 ? 先不说客官怎么想的,估计隔壁老王半夜做梦都想抽抽那谁
}

好了,现在进入主题,以下要说的是共用体,乍一看是不是觉得很容易理解,共用体嘛,不就是大家都可以用的东西
它的语法很简单(其实跟结构体没啥区别)
union 共用体名
{
    成员列表
}变量列表;

至于如何引用,这个更简单,相信点语法的便捷性大家都知道,而他,也是用点语法通过变量名直接点出成员就行了
例如:
union  MoneyUnion
{
   int iYuan;
   char cYuan;
}lovelyMoney;

在main函数里面调用的时候直接就可以用:
  lovelyMoneyiYuan;
  lovelyMoney.cYuan;

好了,刚刚上面那些是跟结构体乍一看一样的部分,现在来说下不一样的部分

//手写的太累,我就COPY一下上面的代码,就像隔壁老王说的,一个好的程序猿,一定要懂拷贝代码
union  MoneyUnion
{
   int iYuan;
   char cYuan;
};


int main ()
{
    union MoneyUnion union; //定义共用体变量 (这就跟结构体不一样了吧)
    union.iYuan = 97; // 为共用体变量赋值

    printf("iYuan:%d\n",union.iYuan);
   printf("cYuan:%d\n",union.cYuan);  
   /*输出这个共用体变量的数据,你会发现很神奇的事,明天只是为iYuan赋值,为什么cYuan的输出结果是‘a’;
   这就是为什么共用体的特点之一,只需要为其中一个成员赋值,那么赋的这个值其它的内部成员是共享的。
   而如果要改值的话,也只需要为其中的一个成员变量重新赋值就可以了
   一般情况是以第一个成员为基本(道听途说),更多的是根据实际需求 */
   
}




作者: 最爱舒儿    时间: 2016-4-7 00:34
学到了                                                
作者: 拼搏    时间: 2016-4-7 15:46
好好加油




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2