浅谈c++中结构体和共用体的区别
在c++中,结构体(struct)和共用体(union)是两种很相似的复合数据类型,都可以用来存储多种数据类型,但是两者还有很大的区别。
结构体(struct)
结构是用户自定义的类型,比数组更灵活,同一个结构可以存储多种类型的数据。
结构的创建包括两步,首先定义结构描述---描述并标记了能够存储在结构中的各种数据类型。
struct shoes {char name[20];int size;double price;};
下面就可以按描述创建结构变量。
shoes sport;
[struct] shoes boot;(c++中struct 可以省略)
在c++中,结构声明可以说是定义了一种新类型,结构名相当于基本类型名。使用结构体,通过结构变量名使用成员操作符(.)来访问各个成员,如sport.name。访问类成员函数的方式就是从访问结构成员变量的方式衍生而来的。
共用体(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++中结构体和共用体的区别相关推荐
- scale和java比较_浅谈java中BigDecimal的equals与compareTo的区别
这两天在处理支付金额校验的时候出现了点问题,有个金额比较我用了BigDecimal的equals方法来比较两个金额是否相等,结果导致金额比较出现错误(比如3.0与3.00的比较等). [注:以下所讲都 ...
- html 取消只读属性,浅谈html中input只读属性readonly和disable的区别
Readonly和Disabled它们都能够做到使用户不能够更改表单域中的内容.但是它们之间有着微小的差别,总结如下: Readonly只针对input(text / password)和textar ...
- python列表和数组区别java_浅谈numpy中np.array()与np.asarray的区别以及.tolist
array和asarray都可以将结构数据转化为ndarray,但是主要区别就是当数据源是ndarray时,array仍然会copy出一个副本,占用新的内存,但asarray不会. 1.输入为列表时 ...
- java nio 李林峰_浅谈Java中BIO、NIO和AIO的区别和应用场景
最近一直在准备面试,为了使自己的Java水平更上一个档次,拜读了李林峰老师的<Netty权威指南>,了解了Java关于IO的发展和最新的技术,真是受益匪浅,现在把我总结的关于BIO.NIO ...
- java对象头_浅谈java对象结构 对象头 Markword
概述 对象实例由对象头.实例数据组成,其中对象头包括markword和类型指针,如果是数组,还包括数组长度; | 类型 | 32位JVM | 64位JVM| | ------ ---- | ----- ...
- java对象头markword_浅谈java对象结构 对象头 Markword
概述 对象实例由对象头.实例数据组成,其中对象头包括markword和类型指针,如果是数组,还包括数组长度; | 类型 | 32位JVM | 64位JVM| | ------ ---- | ----- ...
- 浅谈Android中的MVP与动态代理的结合
浅谈Android中的MVP与动态代理的结合 本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 在Android开发平台上接触MVP足足算起来大概已经有一个年头左右.从最开始到现在经 ...
- 浅谈OC中Block的本质
Block简介 block是将函数及其执行上下文封装起来的一个对象 在block实现的内部,有很多变量,因为block也是一个对象 其中包含了诸如isa指针,imp指针等对象变量,还有储存其截获变量的 ...
- java 中的单元测试_浅谈Java 中的单元测试
单元测试编写 Junit 单元测试框架 对于Java语言而言,其单元测试框架,有Junit和TestNG这两种, 下面是一个典型的JUnit测试类的结构 package com.example.dem ...
最新文章
- 为什么静态方法无法直接调用非静态成员变量和方法
- 【2781】二分练习 sdutOJ
- java static null,我们可以在Java中使用null对象调用静态方法吗?如果是这样,怎么样?...
- HashMap 的性能因子
- 称特价影票被取消后影片仍正常放映 购票人起诉淘票票索赔500元
- Problem Statement
- Spring Boot (30) 上传文件
- 树莓派如何接硬盘_利用树莓派和闲置硬盘,搭建起家中的个人网盘
- 如何给图片添加文字?图片加字功能怎么使用?
- Linux unison 效率,linux inotify+unison双向同步环境部署
- hdu 5296 Annoying problem(LCA)
- Quokka.js and Wallaby.js Crack
- OpenCV_basis
- Android仿苹果白色dialog
- 初级程序员和高级程序员的区别(转)
- 1. Nacos的安装与启动
- android 64位系统中,需要引用32位库,导致挂掉的问题
- 深度卷积神经网络演化历史及结构改进脉络总结
- 干货速收藏!影视混剪必备的5个素材网站,高清无水印资源下载
- su与su -命令的区别
热门文章
- php青茶什么时候拆,茶叶保质期多长时间 黑绿红白黄青茶的保质期为多久
- cmd java转jar包,cmd 打包java成jar可执行文件
- php 虚类,减伤、虚弱类技能汇总 - 游戏服务区 - 《洛克王国》官方论坛 - Powered by Discuz!...
- 微赞dataconfig.php,php生成微信jssdk wx.config参数,调用js接口
- stm32的rxne和idle中断_STM32 HAL CubeMX 串口IDLE接收空闲中断+DMA
- C++安全方向(三):3.5 SHA-1 算法分析和代码演示
- leetcode刷题:2.两数之和
- php 常用函数 180,php 部分常用函数
- 百度api 一直提示token错误_phpcms小程序插件小程序万能接口api(支持微信、百度)...
- java堆内存_java堆内存详解