在c++中,结构体(struct)和共用体(union)是两种很相似的复合数据类型,都可以用来存储多种数据类型,但是两者还有很大的区别。

  1. 结构体(struct)

    结构是用户自定义的类型,比数组更灵活,同一个结构可以存储多种类型的数据。

    结构的创建包括两步,首先定义结构描述---描述并标记了能够存储在结构中的各种数据类型。

    struct  shoes {char name[20];int size;double price;};

    下面就可以按描述创建结构变量。

    shoes sport;

    [struct] shoes boot;(c++中struct 可以省略)

    在c++中,结构声明可以说是定义了一种新类型,结构名相当于基本类型名。使用结构体,通过结构变量名使用成员操作符(.)来访问各个成员,如sport.name。访问类成员函数的方式就是从访问结构成员变量的方式衍生而来的。

  2. 共用体(union)

    共用体也是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型。也就是说,结构可以同时存储int、long和double,共用体只能存储int、long或者double中的一种。共用体的句法与结构类似,但含义不同。

    union one4all {int int_val;long long_val;double double_val;};

    可以使用one4all变量来存储int、long 或double,条件是在不同的时间进行。

    定义一个共用体变量,one4all pail;

    pail使用成员操作符访问其中变量时只有一个成员是当前成员,即one4all中的三个变量共享一个地址,当pail访问int_val时,内存中存储的就是int型。

    共用体的用途之一就是,当数据使用两种或更多种格式(但不会同时使用)时,可以节省空间。

转载于:https://www.cnblogs.com/howie-liang/p/8006965.html

浅谈c++中结构体和共用体的区别相关推荐

  1. scale和java比较_浅谈java中BigDecimal的equals与compareTo的区别

    这两天在处理支付金额校验的时候出现了点问题,有个金额比较我用了BigDecimal的equals方法来比较两个金额是否相等,结果导致金额比较出现错误(比如3.0与3.00的比较等). [注:以下所讲都 ...

  2. html 取消只读属性,浅谈html中input只读属性readonly和disable的区别

    Readonly和Disabled它们都能够做到使用户不能够更改表单域中的内容.但是它们之间有着微小的差别,总结如下: Readonly只针对input(text / password)和textar ...

  3. python列表和数组区别java_浅谈numpy中np.array()与np.asarray的区别以及.tolist

    array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会. 1.输入为列表时 ...

  4. java nio 李林峰_浅谈Java中BIO、NIO和AIO的区别和应用场景

    最近一直在准备面试,为了使自己的Java水平更上一个档次,拜读了李林峰老师的<Netty权威指南>,了解了Java关于IO的发展和最新的技术,真是受益匪浅,现在把我总结的关于BIO.NIO ...

  5. java对象头_浅谈java对象结构 对象头 Markword

    概述 对象实例由对象头.实例数据组成,其中对象头包括markword和类型指针,如果是数组,还包括数组长度; | 类型 | 32位JVM | 64位JVM| | ------ ---- | ----- ...

  6. java对象头markword_浅谈java对象结构 对象头 Markword

    概述 对象实例由对象头.实例数据组成,其中对象头包括markword和类型指针,如果是数组,还包括数组长度; | 类型 | 32位JVM | 64位JVM| | ------ ---- | ----- ...

  7. 浅谈Android中的MVP与动态代理的结合

    浅谈Android中的MVP与动态代理的结合 本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 在Android开发平台上接触MVP足足算起来大概已经有一个年头左右.从最开始到现在经 ...

  8. 浅谈OC中Block的本质

    Block简介 block是将函数及其执行上下文封装起来的一个对象 在block实现的内部,有很多变量,因为block也是一个对象 其中包含了诸如isa指针,imp指针等对象变量,还有储存其截获变量的 ...

  9. java 中的单元测试_浅谈Java 中的单元测试

    单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...

最新文章

  1. 为什么静态方法无法直接调用非静态成员变量和方法
  2. 【2781】二分练习 sdutOJ
  3. java static null,我们可以在Java中使用null对象调用静态方法吗?如果是这样,怎么样?...
  4. HashMap 的性能因子
  5. 称特价影票被取消后影片仍正常放映 购票人起诉淘票票索赔500元
  6. Problem Statement
  7. Spring Boot (30) 上传文件
  8. 树莓派如何接硬盘_利用树莓派和闲置硬盘,搭建起家中的个人网盘
  9. 如何给图片添加文字?图片加字功能怎么使用?
  10. Linux unison 效率,linux inotify+unison双向同步环境部署
  11. hdu 5296 Annoying problem(LCA)
  12. Quokka.js and Wallaby.js Crack
  13. OpenCV_basis
  14. Android仿苹果白色dialog
  15. 初级程序员和高级程序员的区别(转)
  16. 1. Nacos的安装与启动
  17. android 64位系统中,需要引用32位库,导致挂掉的问题
  18. 深度卷积神经网络演化历史及结构改进脉络总结
  19. 干货速收藏!影视混剪必备的5个素材网站,高清无水印资源下载
  20. su与su -命令的区别

热门文章

  1. php青茶什么时候拆,茶叶保质期多长时间 黑绿红白黄青茶的保质期为多久
  2. cmd java转jar包,cmd 打包java成jar可执行文件
  3. php 虚类,减伤、虚弱类技能汇总 - 游戏服务区 - 《洛克王国》官方论坛 - Powered by Discuz!...
  4. 微赞dataconfig.php,php生成微信jssdk wx.config参数,调用js接口
  5. stm32的rxne和idle中断_STM32 HAL CubeMX 串口IDLE接收空闲中断+DMA
  6. C++安全方向(三):3.5 SHA-1 算法分析和代码演示
  7. leetcode刷题:2.两数之和
  8. php 常用函数 180,php 部分常用函数
  9. 百度api 一直提示token错误_phpcms小程序插件小程序万能接口api(支持微信、百度)...
  10. java堆内存_java堆内存详解