C++ 共用体 枚举类型 所有
一。共用体类型
1.共用体的概念。
有时候需要将几种不同类型的变量存放到同一段内存单元中。例如有三个变量,他们的字节数不同,但是都从同一个地址开始存放。也就是用了覆盖技术,几个变量互相覆盖。这种使几个不同变量共占同一个内存的结构,称为共用体类型结构。
其一般形式:
union 共用体类型名
{
成员列表
};
定义共用体变量的一般形式:
共用体类型名 共用体变量名;
例如:
union data
{
int a;
char ch;
double d;
}
注意:结构体变量所占内存长度是各个成员的内存长度之和,每个成员都有其自己的内存单元。
共用体变量所占的内存长度等于最长的成员的长度。
2.对共同体变量的访问方式。
不能引用共同体变量,而只能引用共同体变量中的成员。下面的引用方式是正确的:
(1)a.i (引用共同体变量中的整型成员i)
(2)a.ch (引用共同体变量中的字符型成员ch)
(3)a.f (引用共同体变量中的双精度类型成员d)
不能引用共同体变量,例如cout<<a;是不对的,应写成cout<<a.i;或者cout<<a.ch;
二。枚举类型
1.就是将变量一一列举出来,变量的值只能在列举出来的值的范围内。
声明枚举类型用enum开头,例如:
enum weekday{sun,mon,tue,wed,thu,fri,sat};
括号中的元素称为枚举元素或枚举常量。表示这个类型的变量的值只能是元素中值之一。
声明枚举类型的一般形式为:
enum 枚举类型名{枚举常量列表};
在声明了枚举类型之后,可以用来定义变量,如:weekday workday,week_end;
注意:1.对枚举元素安常量进行处理,故称为枚举常量。他们不是变量,不能对他们进行赋值。如:
sum=0;mon=0; 这些都是错误的,不能对枚举常量进行赋值。
2.枚举元素作为常量,他们是有值的,C++编译按定义时的顺序对他们进行赋值为0,1,2,3,4,......。在上面声明中,sun的值为0,mon的值为1,......。像,workday=mon;这个值是可以输出的,cout<<workday<<endl;此时输出值是0.
也可以在声明枚举类型时另行制定枚举元素的值。如:
enum weekday{sun=7,mon=1,tue,wed,thu,fri,sat};指定sun=7,mon=1,以后按顺序加1,sat=6。
3.枚举值可以用来判断比较。
if(workday==mon)...
if(workday>sun)...
枚举值的比较规则是按照其在声明枚举类型时的顺序号进行比较。如果定义时未人为指定,则第一个枚举元素的值认作0.故mon>sun,sat>fri。
4.一个整数不能直接赋值给一个枚举变量,
workday = 2;这是不对的,应该进行强制类型转换,才能进行赋值。
workday=(weekday)2;或者workday=weekday(2);都是正确的。相当于workday=tue;
5.声明一个新的类型名的方法是:
1.先按定义变量名的方法写出定义语句(如int i);
2.将变量名换成新类型名(如将i换成COUNT);
3.在最前面加typedef(如 tydedef int COUNT);
4.然后可以用新类型名去定义变量。
6.再以声明上述的数组类型名为例来说明:
1.先按定义数组形式书写:int n[100];
2.将变量名n换成自己指定的类型名:int NUM[100];
3.在前面加上typedef,得到typedef int NUM[100];
4.用来定义变量:NUM n;(n是包含100个整数元素的数组)。
C++ 共用体 枚举类型 所有的更多相关文章
- 瘋子C语言笔记(结构体/共用体/枚举篇)
(一)结构体类型 1.简介: 例: struct date { int month; int day; int year; }; struct student { int num; char name ...
- 5、数组&字符串&结构体&共用体&枚举
程序中内存从哪里来 三种内存来源:栈(stack).堆(heap).数据区(.date): 栈(stack) 运行自动分配.自动回收,不需要程序员手工干预: 栈内存可以反复使用: 栈反复使用后,程序不 ...
- C语言基础 (11) 结构体 ,共用体 枚举 typedef
1 课堂回顾 作用域与生命周期 2 static 局部变量 2 打字游戏 3 内存分区代码分析 4 结构体基本操作 (复合类型[自定义类型 #include <stdio.h> #incl ...
- C# 结构体 枚举类型
注意:枚举类型和结构体都属于值类型. 结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的方法: struct student { public int nianl ...
- C#基础 结构体 枚举类型
结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的例子: struct student { public int nianling; public int fen ...
- C语言的结构体,枚举类型在程序中的作用
http://www.xue63.com/xueask-1221-12212854.html 结构和枚举类型从程序实现的角度来说,是用更接近自然语言的方式来表达数据.比如说实现2维空间的点,你可以使用 ...
- 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符
[源码下载] 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 结构体 ...
- C语言结构体和共用体_07
概述 定义结构体类型变量的方法 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表 共用体 枚举类型 用 typedef定义类型 概述 定义一个结构体的一般形 ...
- 07.C语言:结构体、共用体、枚举
一.结构体 是一种复合的数据类型,由多个不同类型的数据(为结构体的成员)组成的集合. 在c语言中没有给出结构体这种类型具体的形式(名称),但是给出类定义该结构体类型的方法(格式). 在使用结构体类型时 ...
随机推荐
- 酷派改变者S1(C105/C105-6/C105-8) 解锁BootLoader 并刷入recovery root
首先下载好工具链接:https://pan.baidu.com/s/1qZjOCUw 密码:u2dr 备用下载链接:https://pan.baidu.com/s/1pMlmAef 本篇教程教你如何傻 ...
- JAVA面试题基础部分(二)
10.使用 final 关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?使用 final 关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的.例如,对于如下 ...
- (转)基于Metronic的Bootstrap开发框架经验总结(6)--对话框及提示框的处理和优化
http://www.cnblogs.com/wuhuacong/p/4775282.html 在各种Web开发过程中,对话框和提示框的处理是很常见的一种界面处理技术,用得好,可以给用户很好的页面体验 ...
- (转)Bootstrap 之 Metronic 模板的学习之路 - (4)源码分析之脚本部分
https://segmentfault.com/a/1190000006709967 上篇我们将 body 标签主体部分进行了简单总览,下面看看最后的脚本部门. 页面结尾部分(Javascripts ...
- POJ_2063_完全背包
Investment Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 10090 Accepted: 3540 Descr ...
- 整理Webview加载缓慢的解决方案
1.https://www.cnblogs.com/xinye/p/3144139.html 2.https://www.jianshu.com/p/95d4d73be3d1
- 7.5 pragma 指令
第1个pragma禁用了我们感兴趣的特别警告,第2个恢复了它.禁用尽可能小的一段代码的警告是一个良好的做法,以便你不会错过任何真正应该修复的错误.如果你想在单独一行上禁用或恢复多个警告,那么只需用逗号 ...
- 目录-Linux
Linux文件系统: Linux: glibc 程序编译方式: 动态链接 静态编译 进程的类型: 终端:硬件设备,关联一个用户接口 与终端相关:通过终端启动 与终端无关:操作引导启动过程当中自动启动 ...
- C#中三种弹出信息窗口的方式
弹出信息框,是浏览器客户端的事件.服务器没有弹出信息框的功能. 方法一: asp.net页面如果需要弹出信息框,则需要在前台页面上注册一个javascript脚本,使用alert方法.使用Client ...
- (27)Spring Boot Junit单元测试【从零开始学Spring Boot】
Junit这种老技术,现在又拿出来说,不为别的,某种程度上来说,更是为了要说明它在项目中的重要性. 那么先简单说一下为什么要写测试用例 1. 可以避免测试点的遗漏,为了更好的进行测试,可以提高测试效率 ...