//首先,学习编程一定要记得加几个群或者加几个讨论组,因为这样你才能不断地进步还有吵架/滑稽

记一下 关于使用union结构体时遇到的一些坑

To zero-initialize an object of type T means:
— if T is a scalar type (3.9), the object is set to the value of 0 (zero) converted to T;
— if T is a non-union class type, each nonstatic data member and each base-class subobject is zeroinitialized;
— if T is a union type, the object’s first named data member89) is zero-initialized;
— if T is an array type, each element is zero-initialized;
— if T is a reference type, no initialization is performed.
To default-initialize an object of type T means:
— if T is a non-POD class type (clause 9), the default constructor for T is called (and the initialization is
ill-formed if T has no accessible default constructor);
— if T is an array type, each element is default-initialized;
— otherwise, the object is zero-initialized.//这是C++标准里的截取的一小片段,加粗放大的那一句。

然后我就臆想了呀,关于如果声明一个局部变量union,第一个数据缺省初始化为 ”zero“(我感觉这么写比较好

但是万万没想到啊,用起来,union object zero initalize如果union object为全局变量,的确是结构体中的第一个变量为zero,但是,如果为局部变量的化就不一定了《编译器不同,数据也不同

也就是说标准给的这个不包括局部变量(block);

union 里面的元素默认为public类型,union没有constructor function 和 destructor function,因为这两个函数被delete。可以自己定义《鄙人认为现在的条件如果用到面向对象了,应该不会在乎这点内存吧,当然如果对象特别大的话《那我也不会union,我可以用指针啊,如果你说,我这个结构体中的几个变量,每次用的时候都会给初值,并且用的次数不多,那你用union吧,我反正不用。

//这就是构造和析构函数 union MYUNION{char avs[100];char s[2];MYUNION(){strcpy(avs,"abs");}~MYUNION(){}}a;

还是我在标准中标粗的那句话,第一个就是第一个,你别想着大的为零,下面看代码

 union MYUNION{char avs[100];char s[2];}a;//这个 第一行初始为zero 也就是说他的一百个char 全是zero,后面的两个也是zero//然后 换一下
 union MYUNION{char avs[2];char s[100];}a;//这样就是第一行的两个字节被声明了zero,如果输后面的98个就不是zero了

这是一个比较坑的地方要注意。

在数据结构教程第五版 p184 页有提到过,广义表的实现也用到了union这个结构体《只能有一种存在,是这一种,另一种就不是了,这就说了我如果有一个对象,他有两个特性,一个是a,一个是b,我用了a就不能用b,用了b就不能用a,我还想省下一些内存。这样我可以将他封进class/struct中

typedef struct lnode{int tag;union{int data;struct lnode *sublist;}val;struct lnode *link;
}GYB;

union的总结也就到这儿了吧,写的有点乱,如果有哪位博友看到问题或者其他排版问题  /*欢迎评论和私聊*/

转载于:https://www.cnblogs.com/jijiboy/p/9966289.html

C++/C union使用记一下锅相关推荐

  1. 杭州美食地图最新版本

    请随便吃吧: 1.地点:庆春路金壁辉煌对面.店名:潮洲牛肉店.特色:牛肉面特别好吃,有5元的和10元的两种,另外潮洲鱼板面是用鱼肉和淀粉做成,味道极鲜,值得一试,腐败指数:4星 2.地点:长生路华侨饭 ...

  2. 旅游指南之七----美食天地

    龙鹰鸭王火锅( 美食天地 「 火锅 」 / 城东 ) 龙鹰鸭王火锅布置典雅,壁上的山水画显得朴素亲切, 具有浓郁古色古香的中式风格.除用餐大厅外,还有豪华商务包间.大小优质包间15个,能同时容纳500 ...

  3. 普通高中课程标准实验教科书(必修)数学1_学习笔记

    1.集合 1.1.定义 研究对象被统称为元素(element),元素组成的总体叫做集合(set)(简称为集). 集合中的元素必须是确定的,且互不相同.如果构成两个集合的元素一样,则称两个集合相等. 一 ...

  4. 贵阳美食推荐——清真篇

    火锅 马雲武(清真)黔味牛肉火锅 特色:先吃干锅牛肉,再加汤吃牛肉火锅 贵阳市·青云路店铺地址 周二青山牛肉馆 特色:牛肉火锅 店铺地址 兴义张记干锅清真馆 特色:牛肉火锅 店铺地址 炒菜 永利清真餐 ...

  5. 医学图像分割——U-Net解读与个人笔记

    最近开始尝试医疗影像分割的任务,先从之前的Unet开始阅读,记录一部分笔记以供回顾. 论文地址:http://www.arxiv.org/pdf/1505.04597.pdf 摘要 作者提出了一个相对 ...

  6. java单例实例对象在springboot中实例化了2次,原因竟然是热部署的锅(记一次神奇的bug)

    找bug的一天 神奇的bug spring中的单例 场景 代码 产生的问题 分析 进一步分析 解决问题 参考链接 说明 神奇的bug 前言:我写的明明是单例,可是为什么初始化了二次? 今天写的这个bu ...

  7. 记一次单机系统的性能优化:最后竟是 TCP 的锅

    前言 这篇文章的主题是记录一次 Python 程序的性能优化,在优化的过程中遇到的问题,以及如何去解决的.为大家提供一个优化的思路,首先要声明的一点是,我的方式不是唯一的,大家在性能优化之路上遇到的问 ...

  8. bug诞生记——临时变量、栈变量导致的双杀

    这是<bug诞生记>的第一篇文章.本来想起个文艺点的名字,比如<Satan(撒旦)来了>,但是最后还是想让这系列的重心放在"bug的产生过程"和" ...

  9. mysql join union_MySQL中union和join语句使用区别的辨析教程

    union和join是需要联合多张表时常见的关联词,具体概念我就不说了,想知道上网查就行,因为我也记不准确. 先说差别:union对两张表的操作是合并数据条数,等于是纵向的,要求是两张表字段必须是相同 ...

最新文章

  1. silverlight中递归构造无限级树treeview+checkbox
  2. python统计窗口函数怎么处理_python时间序列:移动窗口函数前篇
  3. Selenium WebDriver中的TestNG侦听器及示例
  4. 计算机准考证打印山东省招生教育,山东省教育招生考试院2020高考准考证打印入口:wsbm.sdzk.cn...
  5. 本地计算机用plsql访问虚拟机中的oracle数据库
  6. linux 磁盘分区对齐,linux查看硬盘4K对齐方法
  7. SpringBoot26 利用 Ribbon + RestTemplate 调用远程服务资源
  8. python中list和numpy的array的转换
  9. .gitignore忽略文件提交服务器
  10. FGSM对抗样本算法实现
  11. ENVI5.1裁剪影像及注意要点(如无论规则或是不规则裁剪结果都是矩形的问题求解)
  12. 2021年低压电工模拟考试题库及低压电工作业考试题库
  13. 小程序中如何引用阿里图标
  14. B. Shashlik Cooking(思维)
  15. 企业自建私有云-openstack-介绍
  16. 移动互联网终端 淘宝客如何实现盈利
  17. Some things about RESUME
  18. C++笔记——第十一篇 多态 深入剖析
  19. 约8937亿元:台积电创下台湾企业市值最高纪录
  20. dos命令(转东转西)

热门文章

  1. 执行eclipse,迅速failed to create the java virtual machine。
  2. 转【红帽GFS集群文件系统配置指南】
  3. linux 笔记 一
  4. winform配置文件的简单使用(转载)
  5. 【Cmake】Cmake学习记录
  6. ARKit 与 ARCore比对(三)
  7. 使用Nginx的proxy_cache缓存功能取代Squid
  8. 将 SqlDataReader 类用于快速只进数据游标
  9. HashTable原理与实现
  10. C语言文件操作函数大全