问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

union的关键字

发布网友 发布时间:2022-04-30 23:15

我来回答

1个回答

热心网友 时间:2022-06-20 05:32

1. 共用体声明和共用体变量定义
共用体(参考“共用体”百科词条)是一种特殊形式的变量,使用关键字union来定义
共用体(有些人也叫"联合")声明和共用体变量定义与结构体十分相似。其形式为:
union 共用体名{
数据类型 成员名;
数据类型 成员名;
...
} 变量名;
共用体表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。在union中,所有的共用体成员共用一个空间,并且同一时间只能储存其中一个成员变量的值。
下例表示声明一个共用体foo: unionfoo{/*“共用”类型“FOO”*/int i;/*“整数”类型“i”*/char c;/*“字符”类型“C”*/double k;/*“双”精度类型“K”*/};再用已声明的共用体可定义共用体变量。
例如用上面说明的共用体定义一个名为bar的共用体变量, 可写成:
union foo bar;
在共用体变量bar中, 整型变量i和字符变量c共用同一内存位置。
当一个共用体被声明时, 编译程序自动地产生一个变量, 其长度为联合中最大的变量长度的整数倍。以上例而言,最大长度是double数据类型,所以foo的内存空间就是double型的长度。 unionfoo/*“共用”类型“FOO”*/{chars[10];/*“字符”类型的数组“S”下面有“10”个元素*/int i;/*“整数”类型i*/};在这个union中,foo的内存空间的长度为12,是int型的3倍,而并不是数组的长度10。若把int改为double,则foo的内存空间为16,是double型的两倍。
它的内存大小与struct的类似,可以参考一下。
由于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. 对于共用体的不同成员赋值, 将会对其它成员重写, 原来成员的值就不存在了, 而对于结构体的不同成员赋值是互不影响的。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
...DE分别在BC AC上,且AE=CD,连接AD,BE交于点p 过B作BQ⊥AD Q为垂足... ...AC上的点,且AE=CD 连接AD BE 交于点P 作BQ垂 ...ac上的点,且ae=cd,连接ad、be交于点p作BQ⊥AD,垂足为Q,求证BP=2... ...AC上的点,且AE=CD,链接AD、BE交于点P,作BQ⊥AD ...AC上的点,且AE=CD,连结AD、BE交于点P,作BQ⊥AD,垂足为Q. ...刚刚大学毕业。由于生病,导致目前没有工作,大学四年的女友也因为我... 形容“荷花的特点”有什么词语 梦见比人还高大的石头蛤蟆,杀人拆房子。我和其他人一起翘辫子了._百度... 梦见别人送我一条蛇,我却把他不小心放了.可是我用石头打了它一下... 作文 我生活在鼓励中 如何增强法律意识,培养法律精神 你好,干细胞培养液,可以面部注射吗? 公用体是双叉树吗c语言 c++共用体的定义 可以给生日的做人手工礼物,做什么比较好?做什么比较容易 求:计算机发展趋势 保险业务绩效考核方案 供体细胞能否直接注入去核卵母细胞?供体细胞的细胞膜怎么处理? 计算机行业还能火几年? 电脑给人类带来了那些好处?紧急!长点啊! 在动物体细胞核移植中,为什么要将待去核的卵母细胞培养到减数第二次*中期? 关于网络犯罪及它的危害的作文。 如何在手机上找到内置SD卡里的文件 为什么电刺激的极性法则,通电的瞬间兴奋发生在阴极,兴奋性增高 辩论“网络利大于弊” 全国每年有多少犯罪人员 中国所有监狱一共关押多少犯人?中国近几年犯罪率的增长情况? 目前生物技术的应用主要在哪几个方面 急需关于&lt;计算机网络犯罪&gt;方面的文章 动物细胞融合的方法 各位大仙,谁能帮我找找江苏省近年来未成年人违法犯罪情况的资料 怎样在手机里查看内存卡里的隐藏文件夹?? union在c语言中是不是合法用户标识符 怎样把内存卡里隐藏的文件夹在手机上显示出来 c++ 共用体? 绩效管理方案设计与评估 C语言有关共用体的使用方法,请前辈们请教谢谢啦! 谁会c语言,联系我,我问一个题 定义结构体的关键字是()。A. union B. enum C. struct D. typedef C语言有多少函数和关键字,都代表什么?求解!!! 共用定义采用什么四要素进行设置 你好我是一个大专生,麻烦你你能帮我找出来C语言机试的所有题目吗谢谢你了哈。 C语言定义共同体的保留字是什么? 哪里有回收点焊机的? 襄樊的旧货市场在哪?我想要一部电焊机! 哪里有卖二手电焊机的 请问哪儿有回收玉柴发动机、熊谷焊机、送丝机的? 哪里有小型电焊机卖? 电焊机卖废品可以卖多少钱? 这种电焊机哪里有卖多少钱?