共用体
–关键字-- union
–是一种数据格式,能够存储不同的数据类型,但同时只能存储其中一种;且共用体的长度为最大成员的长度;

//共用体声明:
union one3all {
int int_val;
long long_val;
double double_val;
};
//共用体使用:
one3all pail;
pain.int_val = 15;
pain.double_val = 2.33 //(此时int值就会丢失,意思是int_val的值可能会改变);

—union可以为其成员指定public、protected和private等访问权限,默认情况下,其成员的访问权限为public

union  one3all {public : int int_val; long long_val; private:double double_val;
};
one3all b;//b访问不到私有成员;
//匿名union
int main(){union{public : int int_val; long long_val; double double_val;
};
int_val = 20;
long_val = 2000;
//输出: int_val = 2000; long_val = 2000; 共用内存
}
//匿名的union成员可以像普通局部变量那样被引用,事实上对于程序而言,这也正是使用这些变量的方式.另外,尽管被定义在一个联合声明中,他们与同一个程序块的任何其他局部变量具有相同的作用域级别.这意味这匿名联合内的成员的名称不能与同一个作用域内的其他变量标识符冲突.
//因为匿名联合不使用点运算符,所以包含在匿名联合内的元素必须是数据,不允许有成员函数,也不能包含私有或受保护的成员。还有,全局匿名联合必须是静态(static)的,否则就必须放在匿名名字空间中。

union 里面那些东西不能存放?
—union 里面的东西共享内存,所以静态、引用都不能用,因为他们不可能共享内存。

相比于struct: union是共用内存,union的大小是成员中最大的那个; struct是分别存储,struct的大小是所有成员的大小之和(还存在内存对齐);

#include <iostream>
using namespace std;union Test{struct{int x;int y;int z;}s;int k;
}myUnion;int main()
{myUnion.s.x = 4;myUnion.s.y = 5;myUnion.s.z = 6;myUnion.k = 0;cout<< myUnion.s.x <<endl;cout<< myUnion.s.y <<endl;cout<< myUnion.s.z <<endl;cout<< myUnion.k <<endl;
}
//输出:x=0; y=5; z=6; k=0;因为k所在内存和x相同

枚举

枚举声明:
enum spectrum {red, orange, yellow,...};
------将spectrum成为新类型的名称,被称为枚举(enumeration),将red,yellow等作为符号常量,对应0,1,2,…。称为枚举量。枚举量默认从0开始,当然也可以显示设置枚举量的值

 enum spectrum {red=1, blue, orange=3, yellow=8};

若其中存在没有初始化的,则为前一个值加1;

只要使用时在范围内即合法,如:

spectrum mm;
mm = spectrum(2);
mm = red;// -- 取值范围为大于最大值的最小2的幂减1;//枚举使用
spectrum band;
band = yellow;spectrum a;
a = blue;
switch(a)
{case red:cout<<"red"<<endl;break;case blue:cout<<"blue"<<endl;break;default:break;
}

----- 只能将枚举量赋值给该枚举的变量;
band = spectrum(3) —相当于强制类型转换;

作用域内枚举----更推荐

对枚举类型而言,同一作用域内定义两个枚举,则不能重名,为了避免这一问题,新增一种枚举,使用class和struct定义: 就可避免重名

enum class new1 {never,often};
new1 n = new1::never;
std::cout<<(int)new1::never<<std::endl;

枚举的使用:

enum {One=1,Two=2,Three=3};int item[Three];//有时候在类或者其他地方,想用变量创建一个数组时,可以这样使用;

c++知识点总结--共用体--枚举相关推荐

  1. c语言指针变量输出不了共用体,瘋子C语言札记(结构体/共用体/枚举篇)

    瘋子C语言笔记(结构体/共用体/枚举篇) (一)结构体类型 1.简介: 例: struct date { int month; int day; int year; }; struct student ...

  2. C语言程序设计 细节总结(第9章 结构体共用体枚举)

    第9章 结构体.共用体.枚举 9.1 结构体 1.对于同类型结构体变量之间可以整体一次赋值 9.2 指向结构体的指针 9.2.1结构体变量的指针 1.定义格式:struct 结构体名 *结构体指针变量 ...

  3. c语言结构体共用体枚举实例程序,10-C语言结构体-共用体-枚举

    结构体是什么? 结构体和数组一样属于构造类型 数组是用于保存一组相同类型数据的,而结构体是用于保存一组不同类型的数组 定义结构体 在使用结构体之前必须先定义结构体类型,因为C语言不知道你的结构体中需要 ...

  4. 九、结构体共用体枚举

    [1]结构体 1.概念: 由用户自定义的一种构造类型,用于描述一个复杂事物,表示多种不同类型数据的集合. 2.定义格式: ​ struct 结构体名 ​ { ​ 数据类型 成员1; ​ 数据类型 成员 ...

  5. c语言结构体加联合,C语言:结构体和联合体(共用体)

    结构体:struct 1.结构体变量的首地址能够被其最宽基本类型成员的大小所整除. 2.结构体每个成员相对于结构体首地址的偏移量(offset)都是成员的整数倍. 3.结构体的总大小为结构体最宽基本类 ...

  6. 共用体和枚举,写写意思下

    共用体:不同的变量共享一段内存 一般形式:union  共用体名 { 成员表列  } 变量表列; 要点:共用体声明,定义和引用类似结构体,但共用体所占的内存大小是最长成员所占的大小,但其只能放其中的一 ...

  7. 黑马程序员C语言基础(第八天)复合类型(自定义类型)(结构体)、共用体(联合体)、枚举enum、 typedef

    黑马程序员C语言基础(第一天) 黑马程序员C语言基础(第二天) 黑马程序员C语言基础(第三天) 黑马程序员C语言基础(第四天)数据类型 黑马程序员C语言基础(第五天)运算符与表达式.程序流程结构.数组 ...

  8. c++ new一个结构体_「C/C++」构造类型及应用:数组、结构体、共用体、枚举类型...

    3.1数组 同类型.同性质.按顺序存放的一组数据集合,易于批量处理. 3.1.1一维数组 定义 int 1.数组名为常量,指向首地址,由系统指定. 2.数组长度为整型常量,但不能为0 3.上例取值im ...

  9. 字符串类型、结构体、共用体、枚举、container宏、内存来源

    一.C语言的字符串类型 1.C语言没有原生字符串类型 很多高级语言像java.C#等就有字符串类型,有个String来表示字符串,用法和int这些很像,可以String s1 = "linu ...

最新文章

  1. 框架+重量级+轻量级
  2. 【Envi风暴】Envi插件大全:多波段拆分工具的巧妙使用
  3. 前端学习(2260)高校案例
  4. SIM800C Couldn't pair with xxx because of an incorrect PIN or passkey
  5. 斗鱼上市首日低开平收 总市值37.3亿美元
  6. [Jenkins]如何自动停止超时任务?
  7. android studio报错:引入大疆sdk,在真机上允许一闪而过,Logcat报错:Lcom/secneo/sdk/Helper;
  8. Ionic项目修改应用图标和启动页
  9. 按键精灵简单的限时找图并点击
  10. 常用CMOS模拟开关功能和原理(4066,4051-53)
  11. win10家庭版如何开启远程操控/远程协助?
  12. XML文件简介和解析
  13. caffe-ssd细节梳理
  14. 传智黑马Python人工智能15期视频课程
  15. 微信小程序生成太阳码 报40071 踩坑记录
  16. Linux ALSA 声卡驱动之一:ALSA架构简介
  17. 经典问题总结——开关灯问题
  18. https 证书过期问题排查
  19. 华钜同创:亚马逊运营必须掌握的技巧
  20. 百度定位到非洲的问题

热门文章

  1. 很实用的JS使浏览器进入全屏
  2. 使用Fiddler进行手机抓包
  3. 社团在学生清华借教室流程
  4. 小傻蛋的妹妹跟随小甲鱼学习Python的第二节002
  5. 对vector<int> 的数组使用sort排序出错
  6. System.Runtime.CompilerServices.Unsafe, Version=4.0.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d
  7. 以太空为主题的Golang简介
  8. “好像”还是“好象”
  9. Meth | 新建git项目
  10. 九、快速入门高等数学的导数和微积分篇