博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
union的用法
阅读量:4452 次
发布时间:2019-06-07

本文共 484 字,大约阅读时间需要 1 分钟。

注:下面的所有结果都是在小端机器上实现的。

union:多个变量共享一块内存

#include
union ss{ int a; char b;};int main(){ ss aa; aa.a = 1; printf("%d %d\n", aa.a, aa.b); aa.b = 2; printf("%d %d", aa.a, aa.b); return 0;}

  运行结果:

解释:下面是变量在内存中的存放位置

 

变量a内存大小是4个字节,所以存放在整个内存中,变量b内存大小是一个字节,所以只是存放在内存的低地址的第一个字节,小端机器上会把低位字节存放在低位地址上,当做aa.a=1;时在低地址的第一个字节上写入1,而这块内存是a与b共享的,所以此时b的值也会变成1.接着再做aa.b=2;对b重新赋值为2,此时会在b的 内存上写入2,同时也会覆盖掉原本内存上的1,这样当输出a的值时就变成了2,输出b的值也会变成2.

 

 

 

  

转载于:https://www.cnblogs.com/wuyepeng/p/9862389.html

你可能感兴趣的文章
转:iphone 申请证书
查看>>
电子测量作业——采用DDS(数字频率合成法)设计信号发生器 ,完成设计方案。...
查看>>
Python就业方向
查看>>
一步步学习SPD2010--第二章节--处理SP网站(3)--创建网站层次架构
查看>>
TCP
查看>>
Excel常用函数大全
查看>>
团队-团队编程项目中国象棋-模块测试过程
查看>>
R-创建数据集-ch2
查看>>
gitHub地址
查看>>
10个经典的C语言面试基础算法及代码
查看>>
[概念] js的函数节流和throttle和debounce详解
查看>>
普通的java Ftp客户端的文件上传
查看>>
视图系统
查看>>
Palindromes _easy version
查看>>
vue 小记
查看>>
CURRICULUM VITAE
查看>>
菱形缓冲器电路
查看>>
盲点流水账记录
查看>>
08多态
查看>>
Groovy 程序结构
查看>>