zoukankan      html  css  js  c++  java
  • union

    联合union

    联合和结构体的区别:结构体为每一个成员分配存储空间,而联合体的内存大小采取最长成员所需的长度,联合变量只存在一个成员变量,所有成员共享同一片内存。

    第二次为联合赋值会覆盖第一次赋值。

    一个联合变量可以在不同时间存储多种类型的变量,节省内存。

    #include<stdio.h>
    #include<limits.h>
    int main() {
        union {
            int i;
            signed char j;
            struct {
                float f;
                double d;
            }s;
        }num;
        num.i = INT_MAX;
        printf("union的字节数目是%d
    ",sizeof(num));
        char* ptr = (char*)(&num);
        printf("%d %d %d %d
    ",ptr[0],ptr[1],ptr[2],ptr[3]);
        printf("num.i = %u,地址是%p,num.j = %d,地址是%p
    ",num.i,&num.i,num.j,&num.j);
        num.s.f = 0.1;
        num.s.d = 1.0;
        printf("num.s.f = %f,num.s.d = %lf",num.s.f,num.s.d);
    }

    union的字节数目是16
    -1 -1 -1 127
    num.i = 2147483647,地址是000000000062FE30,num.j = -1,地址是000000000062FE30
    num.s.f = 0.100000,num.s.d = 1.000000
    --------------------------------
    Process exited after 0.8063 seconds with return value 0
    请按任意键继续. . .

  • 相关阅读:
    Minecraft 1.12.2/1.14.4 Mod开发笔记——搭建环境
    Minecraft 1.12.2 Mod开发笔记
    浅谈莫比乌斯反演
    卡迈克尔数
    一些可能会有用的东西(持续更新)
    emacs配置
    CSPS 2020游记
    浅谈KMP
    Atcoder AGC052
    乌班图操作指令(持续更新)
  • 原文地址:https://www.cnblogs.com/afreeman/p/8525168.html
Copyright © 2011-2022 走看看