zoukankan      html  css  js  c++  java
  • 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;
    	
    }
    


    如图:




  • 相关阅读:
    Kafka——相关概念及核心配置说明
    Kafak——Kafka-Manager安装部署
    Kafka——集群安裝部署(自带Zookeeper)
    ElasticSearch日志删除命令
    QML ListView json
    Qt websocket
    Tickets
    3.docker容器的数据卷
    2.docker命令
    1.安装和初始化docker
  • 原文地址:https://www.cnblogs.com/mfmdaoyou/p/7090797.html
Copyright © 2011-2022 走看看