• C语言 公用体


    C语言 公用体

    共用体(联合体)

    • 联合union是一个能在同一个存储空间存储不同类型数据的类型;
    • 联合体所占的内存长度等于其最长成员的长度,也有叫做共用体;
    • 同一内存段可以用来存放几种不同类型的成员,但每一瞬时只有一种起作用;
    • 共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员的值会被覆盖;
    • 共用体变量的地址和它的各成员的地址都是同一地址。

    案例

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <math.h>
    #include <time.h>
    
    // 使用优点:节省内存空间
    union Var
    {
        int a;
        float b;
        double c;
        char d;
        short f[6];
    };
    
    int main(void)
    {
        union Var var;
        var.a = 100;
        var.b = 3.14;
    
        // 最后一次值时有效的、其他会被覆盖
        printf("%d
    ", var.a);
        printf("%f
    ", var.b);
    
        // 大小根据最大类型字节算
        printf("%d
    ", sizeof(var));
    
        // 所有类型公用一块内存
        printf("%p
    ", &var);
        printf("%p
    ", &var.a);
        printf("%p
    ", &var.b);
        printf("%p
    ", &var.c);
    
        return 0;
    }
    公用体 使用案例
    #include <stdio.h>
     
    //共用体也叫联合体
    union Test
    {
           unsigned char a;
           unsigned int b;
           unsigned short c;
    };
     
    int main()
    {
           //定义共用体变量
           union Test tmp;
     
           //1、所有成员的首地址是一样的
           printf("%p, %p, %p
    ", &(tmp.a), &(tmp.b), &(tmp.c));
     
           //2、共用体大小为最大成员类型的大小
           printf("%lu
    ", sizeof(union Test));
     
           //3、一个成员赋值,会影响另外的成员
           //左边是高位,右边是低位
           //低位放低地址,高位放高地址
           tmp.b = 0x44332211;
     
           printf("%x
    ", tmp.a); //11
           printf("%x
    ", tmp.c); //2211
     
           tmp.a = 0x00;
           printf("short: %x
    ", tmp.c); //2200
           printf("int: %x
    ", tmp.b); //44332200
     
           return 0;
    }
    公用体 使用案例:2
  • 相关阅读:
    OSPF协议 LSAs
    OSPF协议基础
    交换机Access Trunk Hybrid端口
    网络地址转换 NAT
    访问控制列表 ACL
    路由协议 RIP
    动态路由协议
    static 变量
    Unix网络编程 -- ubuntu下搭建编译环境( 解决unp.h 编译等问题)
    linux 错误处理
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/12381736.html
Copyright © 2020-2023  润新知