c中的union的用法和作用 c语言union 用法

http://blog.chinaunix.net/u2/84450/showart_1829958.html

在C/C++程 序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(我们姑且通俗地称其为“n选1”),我们也
可以使用联合体来发挥其长处。首先看一段代码:union myun
{
struct { int x; int y; int z; }u;
int k;
}a;
int main()
c中的union的用法和作用 c语言union 用法
{
a.u.x =4;
a.u.y =5;
a.u.z =6;
a.k = 0;
printf("%d %d %dn",a.u.x,a.u.y,a.u.z);
return 0;
}union类型是共享内存的,以size最大的结构作为自己的大小,这样的话,myun这个结构就包含u这个结构体,而大小也等于u这个结构体的大小,在内存中的排列为声明的顺序x,y,z从低到高,然后赋值的时候,在内存中,就是x的位置放置4,y的位置放置5,z的位置放置6,现在对k赋值,对k的赋值因为是union,要共享内存,所以从union的首地址开始放置,首地址开始的位置其实是x的位置,这样原来内存中x的位置就被k所赋的值代替了,就变为0了,这个时候要进行打印,就直接看内存里就行了,x的位置也就是k的位置是0,而y,z的位置的值没有改变,所以应该是0,5,6当程序变成union myun
{
struct { int x; int y; int z; }u;
int k;
int j;
}a;
int main()
{
a.u.x =4;
a.u.y =5;
a.u.z =6;
a.k = 0;
a.j = 1;
printf("%d %d %dn",a.u.x,a.u.y,a.u.z);
return 0;
}结果为1,5,6因为还是从最低的地址开始覆盖,而不是像有些人想象的是 0,1,6

  

爱华网本文地址 » http://www.aihuau.com/a/25101016/287502.html

更多阅读

深海鱼油的功效和作用 龙胆泻肝丸功效与作用

深海鱼油的功效和作用——简介现代科学实验证明:深海鱼油所含的DHA和EPA是人体代谢过程中不可缺少的重要物质之一。俗称“脑黄金”的DHA主要存在于人体大脑的灰质部,它能有效活化脑细胞,提高脑神经信息传送速度,增强记忆力,延缓衰老。另

甘蔗的功效和作用 甘蔗的功效与作用孕妇

甘蔗的功效和作用——简介甘蔗是水果中唯一的茎用水果,也是水果中含纤维(包括非膳食纤维)最多的一种水果。甘蔗含糖量高,浆汁甜美,被称为“糖水仓库”,可以给食用者带来甜蜜的享受,并提供相当多的热量和营养。下面介绍一下甘蔗的具体功效

陈皮的功效和作用 玫瑰花茶的功效与禁忌

陈皮的功效和作用——简介陈皮也叫橘皮,贵老,红皮,黄橘皮,广橘皮,新会皮,柑皮,广陈皮。分布于长江以南各地区。10至12月果实成熟时,摘下果实,剥取果皮,阴干或通风干燥。广陈皮剥取时多割成3至4瓣。陈皮药材分“陈皮”和“广陈皮”。陈皮的功

黑碧玺的功效和作用 黑碧玺功效

? ??黑碧玺是一种比较常见的电气石,从外形上看和黑玛瑙、黑曜石有点相似,但是黑碧玺的功效和作用要更猛更强烈,今天我们就聊一下黑碧玺的功效和作用。  黑碧玺的功效和作用之一:除恶辟邪  黑碧玺有着非常强大的辟邪能力,能够去除

榴莲的功效和作用 菠萝蜜和榴莲的区别

榴莲的功效和作用——简介很多人喜欢吃榴莲,但是也有很多人因为受不了榴莲的味道从来也不吃,不管是喜欢吃也好,不喜欢吃也好,榴莲的功效和作用却很少有人清楚,今天小编就给大家详细的介绍一下,关于榴莲的一些营养价值。榴莲的功效和作用

声明:《c中的union的用法和作用 c语言union 用法》为网友那夜我哭叻分享!如侵犯到您的合法权益请联系我们删除