`
eriol
  • 浏览: 408932 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Union的一点使用心得

    博客分类:
  • C++
阅读更多

Union的概念

 

“联合”是一种特殊的类,也是一种构造类型的数据结构。在一个“联合”内可以定义多种不同的数据类型, 一个被声明为该“联合”类型的变量中,允许装入该“联合”所定义的任何一种数据,这些数据共享同一段内存,已达到节省空间的目的(还有一个节省空间的类型:位域)。 这是一个非常特殊的地方,也是联合的特征。另外,同struct一样,联合默认访问权限也是公有的,并且,也具有成员函数。

 

 

Union和Struct的区别

 

“联合”与“结构”有一些相似之处。但两者有本质上的不同。在结构中各成员有各自的内存空间, 一个结构变量的总长度是各成员长度之和(空结构除外,同时不考虑边界调整)。而在“联合”中,各成员共享一段内存空间, 一个联合变量的长度等于各成员中最长的长度。应该说明的是, 这里所谓的共享不是指把多个成员同时装入一个联合变量内, 而是指该联合变量可被赋予任一成员值,但每次只能赋一种值, 赋入新值则冲去旧值。

 

#include<stdio.h>

int main()
{
    union X {
        int a;
        char b[4];
    }x;

    x.a = 0x1;
    if (x.b[0] == 0x1)
        printf("little endian\n");
    else if (x.b[4] == 0x1)
        printf("big endian\n");

    return 0;
}
 
分享到:
评论

相关推荐

    SQL语句 UNION 和 UNION ALL 使用

    ### SQL语句 UNION 和 UNION ALL 使用详解 #### 一、SQL UNION 和 UNION ALL 的基本概念 **UNION** 和 **UNION ALL** 是 SQL 语言中用于合并两个或多个 SELECT 语句结果集的关键字。这两种操作符都可以帮助我们...

    union和struct混合使用C++源码

    本程序中定义了一个结构体,其成员有一个union,union中又定义了一个结构体,很好的体现了使用union的方法

    Informatica Union Transformation组件 详解

    Informatica Union Transformation 组件详解 Informatica Union Transformation 组件是 PowerCenter 的一个重要...但是,在使用 Union Transformation 时,需要遵守一定的规则和指导方针,以确保正确地使用该组件。

    union all与order by用法

    当我们使用 UNION ALL 合并多个 SELECT 语句的结果集时,如果我们想要对整个结果集进行排序,就需要使用 ORDER BY 子句。但是,需要注意的是,ORDER BY 子句只能在 UNION ALL 的最后一个子查询中使用,否则将会报错...

    MySQL中使用or、in与union all在查询命令下的效率对比

    在MySQL数据库中,进行数据查询时,我们经常需要使用到`OR`、`IN`和`UNION ALL`这些操作符。这些操作符在不同的场景下有不同的效率表现,但并不是像网络上普遍认为的那样,`UNION ALL`总是比`OR`和`IN`更快。实际上...

    MySQL中union和order by同时使用的实现方法

    MySQL中union和order by是可以一起使用的,但是在使用中需要注意一些小问题,下面通过例子来说明。首先看下面的t1表。 1、如果直接用如下sql语句是会报错:Incorrect usage of UNION and ORDER BY。 SELECT * FROM ...

    systemverilog中struct和union的一种用法

    在以太网回环测试平台中,我们可以使用 struct 和 union 来实现对以太网帧的分离和提取。例如,在 driver 模块中,我们可以使用 Mem 来发送数据,而在数据产生模块中,我们可以使用 eth_frame 来生成以太网帧的各个...

    Sql中的UNION

    如果我们不使用`UNION`而是使用`UNION ALL`,那么结果集中可能会包含重复的日期。 #### 五、进阶使用技巧 - **排序结果**:可以通过添加`ORDER BY`子句对结果进行排序。 - **条件过滤**:可以使用`WHERE`子句对...

    oracle集合union、union all、intersect、minus

    在上面的示例中,我们使用 union 操作将两个查询结果合并成一个结果集。结果集中的每一行都是唯一的,没有重复行。 union all 操作 Union all 操作与 union 操作类似,但 union all 操作不会去除重复行。 union ...

    UNION ALL 的使用方法

    SELECT ... UNION ALL SELECT C.TRD_NO FROM XXXXXXXXX C WHERE C.CLIENT_CD = W_IN_CLIENT_CD ) D WHERE A.TRD_NO = D.TRD_NO AND A.CLIENT_CD = W_IN_CLIENT_CD AND A.RESULT IS NULL ;

    C++中union详解

    本文将详细介绍`union`的概念、特点、与结构体(struct)的区别以及如何在实际开发中有效使用`union`。 #### 二、什么是Union? **Union**是一种特殊的类,也是一种构造类型的数据结构。在一个**union**内可以定义多种...

    sqlserver union

    2. **减少数据量**:避免在`UNION`中包含大量数据,尤其是在不需要去除重复值的情况下使用`UNION`。 3. **考虑使用JOIN**:有时,`JOIN`操作可能比`UNION`更适合处理数据,特别是当合并的数据来自同一表或需要关联...

    sql利用union all行转列

    2. **使用UNION ALL合并结果**:将这些子查询通过`UNION ALL`合并起来,形成一个新的结果集。 3. **添加外键关联**:通过主键或其他唯一标识符,将这些子查询结果关联起来,以确保行与行之间的正确匹配。 #### 示例...

    sqlserver Union和SQL Union All使用方法

    了解何时使用`UNION`以获取唯一记录,何时使用`UNION ALL`以包含所有记录,对于编写高效的SQL查询至关重要。在实际项目中,根据业务需求和性能考虑,正确选择和使用这两个操作符能有效提升数据处理能力。

    Sql中的UNION ALL

    #### UNION ALL 的使用方法 `UNION ALL`的基本语法格式如下: ```sql (SELECT column_name(s) FROM table1) UNION ALL (SELECT column_name(s) FROM table2); ``` 这里的关键在于两个`SELECT`语句必须拥有相同...

    使用UNION ALL代替IF语句的合并处理案例

    本文探讨了在特定情况下使用`UNION ALL`代替`IF`语句进行合并处理的案例,强调了不恰当的合并处理可能导致的性能问题。 首先,我们来看两种处理方式: 1. 传统`IF`语句方法: 当需要根据条件选择查询不同表时,...

    Mssql Union 与 Union All区别,用union还是union all主要看业务需求.docx

    在决定使用`UNION`还是`UNION ALL`时,主要考虑以下因素: - **数据去重需求**:如果业务需求要求结果集不包含重复行,则选择`UNION`。例如,在统计唯一用户时。 - **性能**:如果不需要去重且数据量大,为了提高...

    SQL语句中UNION子句的使用.pdf

    SQL语句中UNION子句的使用 SQL语句中UNION子句的使用是SQL语言中的一种重要特性,它允许将两个或多个SELECT语句的查询结果合并为一个结果集,从而实现一些复杂的查询需求。在Visual FoxPro中,UNION子句可以用来...

    struct和union.pdf

    struct和union struct和union

Global site tag (gtag.js) - Google Analytics