union

王朝百科·作者佚名  2009-11-11  
宽屏版  字体: |||超大  

union:C/C++语言关键字。1. 共用体声明和共用体变量定义

共用体(参考“共用体”百科词条)是一种特殊形式的变量,使用关键字union来定义

共用体声明和共用体变量定义与结构体十分相似。其形式为:

union 共用体名{

数据类型 成员名;

数据类型 成员名;

...

} 变量名;

共用体表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。在union中,所有的共用体成员共用一个空间,并且只能储存其中一个成员变量的值。

下例表示声明一个共用体foo:

union foo{

int i;

char c;

double k;

};

再用已声明的共用体可定义共用体变量。

例如用上面说明的共用体定义一个名为bar的共用体变量, 可写成:

union foo bar;

在共用体变量bar中, 整型变量i和字符变量c共用同一内存位置。

当一个共用体被说明时, 编译程序自动地产生一个变量, 其长度为联合中最大的变量长度。以上例而言,最大长度是double数据类型,所以foo的内存空间就是double型的长度。

由于union的资料成员共用一个内存空间,所以必须存取正确的成员才能正确的读取变量值,可以使用一个额外的变数或列举型态来记录最后一次使用空间的是哪个成员,例如:

#include <iostream>

using namespace std;

union StateMachine {

public:

char character;

int number;

char *str;

StateMachine(char c) {

character = c;

}

StateMachine(int n) {

number = n;

}

StateMachine(char* s) {

str = s;

}

};

enum State {character, number, str};

int main() {

State state = character;

StateMachine machine('J');

...

if(state == character)

cout << machine.character << endl;

...

return 0;

}

另外要注意的是,union的成员不可以为静态、参考,如果是自订型态的话,该自订型态成员不可以有建构函式、解构函式或是复制指定运算子。

2. 共用体和结构体的区别

共用体和结构体有下列区别:

1. 共用体和结构体都是由多个不同的数据类型成员组成, 但在任何同一时刻, 共用体只存放了一个被选中的成员, 而结构体的所有成员都存在。

2. 对于共用体的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构体的不同成员赋值是互不影响的。

UNION:SQL运算符数据库 Transact-SQL 中 的运算符,将两个或更多查询的结果组合为单个结果集,该结果集包含联合查询中的所有查询的全部行。这与使用联接组合两个表中的列不同。使用 UNION 组合两个查询的结果集的两个基本规则是:

1 、 所有查询中的列数和列的顺序必须相同。

2 、 数据类型必须兼容。

例句:

select top 100 aa.keyno,aa.commtype from comminfo aa

union all

select bb.userno,bb.corpname from userinfo bb

将comminfo表和userinfo表中的字段合成一个结果集

UNION:autocad命令功能:组合面域或实体。 组合面域是两个或多个现有面域的全部区域合并起来形成的。组合实体是两个或多个现有实体的全部体积合并起来形成的。可合并无共同面积或体积的面域或实体。

 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝百科 版权所有