• C语言中的union使用方法


    union共用声明和共用一变量定义:

    “联合”是一种特殊的类,也是一种构造类型的数据结构。在一个“联合”内能够定义多种不同的数据类型。

    一个被说明为该“联合”类型的变量中。同意装入该“联合”所定义的不论什么一种数据。这些数据共享同一段内存,

    以达到节省空间的目的(另一个节省空间的类型:位域)。

    这是一个很特殊的地方,也是联合的特征。

    另外,同struct一样,联合默认訪问权限也是公有的,而且。也具有成员函数。




    共用体(參考“共用体”百科词条)是一种特殊形式的变量。使用keywordunion来定义
    共用体(有些人也叫"联合")声明和共用体变量定义与结构体十分相似。

    其形式为:



    union 共用体名{
    数据类型 成员名;
    数据类型 成员名;
    ...
    } 变量名;


    共用体表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。
    在union中,全部的共用体成员共用一个空间。
    而且同一时间仅仅能储存当中一个成员变量的值。

    1、union中能够定义多个成员, union的大小由最大的成员的大小决定。
    2、union成员共享同一块大小的内存, 一次仅仅能使用当中的一个成员。
    3、对某一个成员赋值,会覆盖其它成员的值(由于他们共享一块内存。

        但前提是成员所占字节数同样。当成员所占字节数不同一时候仅仅会覆盖对应字节上的值,

        比方对char成员赋值就不会把整个int成员覆盖掉。

        由于char仅仅占一个字节。而int占四个字节

    4、联合体union的存放顺序是全部成员都从低地址開始存放的。



    比例如以下列代码:

    //共用体C语言
    //杨鑫
    #include <stdio.h>
    #include <stdlib.h>
    typedef union
    {
    	char c;
    	int a;
    	int b;
    }Demo;
    int main()
    {
    	Demo d;
    	d.c = 'H';
    	d.a = 10;
    	d.b = 12;
    	printf("最開始时变量所占的字节长度为: %d
    ", sizeof(d)/4);
    	printf("赋值后的三个值分别为:
    ");
    	printf("%c	%d	%d
    ", d.c, d.a, d.b);
    	return 0;
    	
    }
    


    如图:




  • 相关阅读:
    行高 | line-height (Animations & Transitions)
    色域 | @media.color-gamut (Media Queries)
    自动换行 | word-wrap (Text)
    漫谈死锁
    《金融时间序列分析》第3版-蔡瑞胸
    《广告点击延时反馈建模》
    《Google软件测试之道》
    《持续集成:软件质量改进和风险降低之道》
    《DevOps实践:驭DevOps之力强化技术栈并优化IT运行》
    《架构真经:互联网技术架构的设计原则》
  • 原文地址:https://www.cnblogs.com/cxchanpin/p/7266864.html
Copyright © 2020-2023  润新知