二十、C共用体

一、定义

结构体可以同时存储不同的数据类型,里面的成员可以同时赋值。结构体可以存储不同的数据类型,但是只能有一个成员被赋值。原因是结构体的内存大小由所有的成员共同决定,共用体的成员则共同占用同一个内存。当共用体成员被同时赋值的时候,因最新的为准

  • 代码实现:
    #include <stdio.h>
    #include <string.h>
    
    // 定义结构体
    union Data
    {
        int i;
        float f;
        char str[20];
    };
    
    int main()
    {
        // 定义结构变量
        union Data data;
        printf("最大的存储区:%d\n", sizeof(data)); 
    
        // 使用成员运算符(.)访问结构体
        // 由于重复赋值,则以最后一个为准
        data.i = 24;
        data.f = 220.5;
        strcpy(data.str, "xiaomage");
        printf("i:%d\nf:%f\n", data.i, data.f);
        printf("str:%s\n", data.str);
    
        // 使用成员运算符(.)访问结构体
        printf("************\n");
        data.i = 24;
        printf("i:%d\n", data.i);
        
        data.f = 220.5;
        printf("f:%f\n",data.f);
    
        strcpy(data.str,"xiaomage");
        printf("str:%s\n",data.str);
        
        return 0;
        
    }
    
  • 运行结果:
    最大的存储区:20
    i:1868654968
    f:69761631104840121000000000000.000000
    str:xiaomage
    ************
    i:24
    f:220.500000
    str:xiaomage
    

二、共用体作用

共用体一个重要的作用就是节省内存。有的时候,多个数据只用到一个的时候,我们就可以用共用体节省内存。
内存对齐

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值