C++复合类型(结构,共用体,枚举)
•结构是用户定义的类型,而结构的声明定义了这种类型的数据属性。
一.关键字struct声明: 定义了一种新类型
struct inflatable{
char name[20];//结构成员
float volume;//结构成员
double price;//结构成员
}
定义结构之后,便可以创建这种类型的变量。如 inflatable a; inflatable b;inflatable c;由于a的类型为inflatable,因此可以使用成员运算符(.),即a.volume (访问类成员,直接用.)
结构数组:
inflatable结构包含一个数组,
E G:inflatable gifts[100];//若创建包含100个inflatable结构的数组.
cin>>gift[0].volume;
初始化:
inflatable guests[2]={
{"LELE",0.5,21.99},
{"HAHA",2000,565.99}
};
二.共用体
共用体是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中的一种类型。结构可以同时存储int long double,共用体只能存储int,long,double。共用体的句法和结构相似,但含义不同。 one4all是创建的类型
声明: union one4all{
int int_val;
long long_val;
double double_val;
}
可以使用one4all变量来存储int ,long 或double,条件是在不同的时间进行:
one4all pail;
pail.int_val=15;
cout<<pail.int_val;
pail.double_val=1.38
cout<<pail.double_val;
pail有时可以是int变量,有时可以是double变量。成员名称标识了变量的容量。由于共用体每次只能存储一个值,因此它必须有足够的空间来存储最大的成员,所以,共用体的长度为其最大成员的长度。
共用体用途之一:当数据项不用同时使用两种或者更多的时候,可节省空间。假设管理一个小商品目录,其中有一些商品的ID为整数,而另一些的ID为字符串。
struct widget{
char brand[];
int type;
union id{
long id_num;
char id_char[];
}name;
};
widget prize;
if(prize.type==){
cin>>prize.name.id_num;
}else
cin>>prize.name.id_char;
匿名共用体:没有名称,其成员将成为位于相同地址处的变量。
struct widget{
char brand[];
int type;
union {
long id_num;
char id_char[];
};
};
widget prize;
if(prize.type==){
cin>>prize.id_num
}else
cin>>prize.id_char;
三.枚举 创建符号常量,可代替const,允许定义新类型。
enum eg{red,orange,yellow,green,blue,violet,indigo};
•让eg成为新类型的名称:eg被成为枚举,就如struct变量被称为就够一样。
•将red,orange,yellow等作为符号常量,对应值为0~6,这些常量被成为枚举量。
也可以用枚举名来声明这种类型的变量
eg band;
band=blue;
band=2000;//错误的,2000不是枚举数,2000不是枚举变量的值。
C++复合类型(结构,共用体,枚举)的更多相关文章
- C++ 共用体 枚举类型 所有
一.共用体类型 1.共用体的概念. 有时候需要将几种不同类型的变量存放到同一段内存单元中.例如有三个变量,他们的字节数不同,但是都从同一个地址开始存放.也就是用了覆盖技术,几个变量互相覆盖.这种使几个 ...
- C语言基础 (11) 结构体 ,共用体 枚举 typedef
1 课堂回顾 作用域与生命周期 2 static 局部变量 2 打字游戏 3 内存分区代码分析 4 结构体基本操作 (复合类型[自定义类型 #include <stdio.h> #incl ...
- 瘋子C语言笔记(结构体/共用体/枚举篇)
(一)结构体类型 1.简介: 例: struct date { int month; int day; int year; }; struct student { int num; char name ...
- 5、数组&字符串&结构体&共用体&枚举
程序中内存从哪里来 三种内存来源:栈(stack).堆(heap).数据区(.date): 栈(stack) 运行自动分配.自动回收,不需要程序员手工干预: 栈内存可以反复使用: 栈反复使用后,程序不 ...
- 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符
[源码下载] 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 结构体 ...
- 07.C语言:结构体、共用体、枚举
一.结构体 是一种复合的数据类型,由多个不同类型的数据(为结构体的成员)组成的集合. 在c语言中没有给出结构体这种类型具体的形式(名称),但是给出类定义该结构体类型的方法(格式). 在使用结构体类型时 ...
- c的详细学习(10)结构体与共用体的学习(二)
在c语言中,结构体数据类型与共用体数据类型都属于构造类型.共用体与结构体数据类型在定义上十分相似,但它们在存储空间的占用分配上有本质的区别.结构体变量是各种类型数据的集合,各成员占据不同的存储空间,而 ...
- C语言结构体和共用体_07
概述 定义结构体类型变量的方法 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表 共用体 枚举类型 用 typedef定义类型 概述 定义一个结构体的一般形 ...
- C/C++(共用体与枚举)
共用(Union)与枚举(Enum) 共同体 c语言中,不同的成员使用共同的存储区域的数据结构类型称为共用体.(共用,联合体),共用体在定义,说明,适用形式上与结构体相似.两者本质上的不同在于使用内存 ...
随机推荐
- Notes 20180307 : 运算符
我们前边曾说过程序=数据结构+算法,数据结构讲的是数据在内存中的存储形式,这个我会作为2018的一个重点来研究,不过在这里不做赘述,前半年的工作以JavaSE为主.算法则是我们在数据结构的基础上对其的 ...
- Inconsistant light map between PC and Mobile under Unity3D
Author: http://www.cnblogs.com/open-coder/p/3898159.html The light mapping effects between PC and Mo ...
- 环境配置之 Debug 和 Release - iOS
便于开发.打包中在不同环境(测试.生产)间属性的切换更加方便便捷流畅,故创建设置此方式方法,希望对大家能有所帮助. 首先,创建 Configurations Setting File(.xcconfi ...
- 技巧:Vimdiff 使用(改)
技巧:Vimdiff 使用(改) 各种 IDE 大行其道的同时,传统的命令行工具以其短小精悍,随手可得的特点仍有很大的生存空间,这篇短文介绍了一个文本比较和合并的小工具:vimdiff.希望能对在 U ...
- wpf中使用cefsharp加载本地html网页并实现cs和js的交互,并且cefsharp支持any cpu
废话少说,直接上代码: 第一步: 第二步: 第三步: 第四步: App.xaml.cs对应的代码: using CefSharp; using CefSharp.Wpf; using System; ...
- BZOJ2037: [Sdoi2008]Sue的小球(区间DP)
Time Limit: 10 Sec Memory Limit: 64 MBSubmit: 869 Solved: 483[Submit][Status][Discuss] Description ...
- ABAP开发顾问必备:SAP ABAP开发技术总结[转载]
转载自SAP师太技术博客,原文链接:http://www.cnblogs.com/jiangzhengjun/p/4260224.html 在原文上增加了链接,此文及此文的链接版权都归SAP师太所有. ...
- Linux 学习第三天
一.常用命令 1.diff A.diff -q 源文件 目标文件 (快速比较文件是否相同) 2.ifconfig.nmcli (查看配置信息) 命令输入注意: Windows 查看网卡配置信息输入命 ...
- vue服务端渲染缓存应用
vue缓存分为页面缓存.组建缓存.接口缓存,这里我主要说到了页面缓存和组建缓存 页面缓存: 在server.js中设置 const LRU = require('lru-cache') const m ...
- flask第三方插件WTForms
在django中有ModelForm, 虽然flask原生没有提供, 但是强大的第三方也提供了这样的功能 虽然不如django的强大, 但是基本的功能还是可以有的, 下面就来使用一哈. WTForms ...