共用体的定义和变量初始化

#include <stdio.h>
//共用体可以定义在函数外部或者内部,共用体名和变量至少有一种,如果有变量,可以进行初始化
union Data{
    int i;
    char ch;
    double f;
};

union Data1{
    int i;
    char ch;
    double f;
}w,*u;

union {
    int i;
    char ch;
    double f;
}w1={234},*u1;

int main(){
    union Data a;
    //a=3;                     error 不可以直接用一个基本类型的数据对共用体变量赋值
    a.i=3;
    printf("%d\n",a.i);
    a.ch='A';
    printf("%c\n",a.ch);
    a.f=3.14;
    printf("%lf\n",a.f);
    printf("%d,%c\n",a.i,a.ch); //输出垃圾直,因为共用体中所有成员使用的内存的开头地址值都是一样的,所以当我们对其中一个成员赋值的时候会覆盖掉原来的地址
    union Data b={123};     //此种方式只能对这个共用体变量的第一个成员进行赋值
    //union Data c={.f=4.5};//此种方式可以指定某一个成员进行赋值 这属于C99的功能,VC++未实现此功能
    union Data d=b;         //C99允许公用体变量可以相互赋值

    //共用体变量的地址和长度必须被其最宽基本类型成员的大小所整除
    //其总长度补习大于等于最宽成员的长度
    
    //共用体变量的长度
    union Data2{
        char a[10];
        int b;
    }g;
    printf("%d\n",sizeof(g));//必须4的倍数,然后还需要大于10,所以为12
    return 0;
}
共用体可以定义在函数外部或者内部,共用体名和变量至少有一种,如果有变量,可以进行初始化

 

共用体变量的地址和长度必须被其最宽基本类型成员的大小所整除,其总长度补习大于等于最宽成员的长度
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值