c语言联合union 的联合变量,联合标记,联合类型定义的区别

联合的特点:
像结构一样,联合也有多个成员,而且这些成员具有不同的数据类型
编译器职位联合中字大的成员非配足够的内存空间。
联合中的成员,同一时间只能有一个,彼此覆盖。


联合有点像电话亭,有一个人进去了,其他人只能等着,好像联合用刀的不会很多吧。


//
//  main.c
//  UnionTest
//
//  Created by 千 on 16/7/22.
//  Copyright © 2016年 kodulf. All rights reserved.
//

#include <stdio.h>

int main(int argc, const char * argv[]) {
    // insert code here...
    printf("Hello, World!\n");
    /*
     和结构一样:
     联合变量,联合标记,联合类型定义;
     联合变量,使用到就要申明很麻烦。
     联合标记,可以直接声明,但是前面要有union来修改
     联合类型定义,可以像java 一样定义
     */
    //联合的变量
    int i;
    union{
        int i;
        float f;
        char c;
    }u;
    //访问成员变量名臣,成员名称
    u.i=10;
    printf("u.i=%d\n",u.i);
    printf("--------\n");
    u.f=12.0f;
    printf("u.i=%d",u.i);//i已经被f覆盖了
    printf("u.f=%f\n",u.f);
    printf("--------\n");
    u.c='c';
    printf("u.i=%d",u.i);
    printf("u.f=%f",u.f);
    printf("u.c=%c\n",u.c);//c覆盖了上面的f
    printf("--------\n");
    /*
     输出结果:
     u.i=10
     --------
     u.i=1094713344u.f=12.000000
     --------
     u.i=1094713443u.f=12.000094u.c=c
     */
    
    //和之前的结构变量和结构类型标记的一样,如果不使用结构类型标记,那么每一次使用到新的结构变量的时候都要重新的创建。
    //联合的标示
    union MyUnion{
        int i;
        float f;
        char c;
    };
    
    union MyUnion mu,mu2;
    mu.i=10;
    printf("mu.i=%d\n",mu.i);
    printf("--------\n");
    mu.f=12.0f;
    printf("mu.i=%d",mu.i);//i已经被f覆盖了
    printf("mu.f=%f\n",mu.f);
    printf("--------\n");
    mu2.c='c';
    printf("mu2.c=%c\n",mu2.c);//
    
    
    //和结构类型定义一样,这里也有    联合的类型定义
    typedef union{
        int i;
        float f;
        char c;
    }MyUnionType;
    
    MyUnionType myU,myu2;
    myu.i=10;
    printf("myu.i=%d\n",myu.i);
    printf("--------\n");
    mu.f=12.0f;
    printf("myu.i=%d",myu.i);//i已经被f覆盖了
    printf("myu.f=%f\n",myu.f);
    printf("--------\n");
    mu2.c='c';
    printf("myu2.c=%c\n",myu2.c);//
    
    
    return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值