一。共用体类型

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++ 共用体 枚举类型 所有的更多相关文章

  1. 瘋子C语言笔记(结构体/共用体/枚举篇)

    (一)结构体类型 1.简介: 例: struct date { int month; int day; int year; }; struct student { int num; char name ...

  2. 5、数组&字符串&结构体&共用体&枚举

    程序中内存从哪里来 三种内存来源:栈(stack).堆(heap).数据区(.date): 栈(stack) 运行自动分配.自动回收,不需要程序员手工干预: 栈内存可以反复使用: 栈反复使用后,程序不 ...

  3. C语言基础 (11) 结构体 ,共用体 枚举 typedef

    1 课堂回顾 作用域与生命周期 2 static 局部变量 2 打字游戏 3 内存分区代码分析 4 结构体基本操作 (复合类型[自定义类型 #include <stdio.h> #incl ...

  4. C# 结构体 枚举类型

    注意:枚举类型和结构体都属于值类型. 结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的方法: struct student { public int nianl ...

  5. C#基础 结构体 枚举类型

    结构体:就是一个自定义的集合,里面可以放各种类型的元素,用法大体跟集合一样. 一.定义的例子: struct student { public int nianling; public int fen ...

  6. C语言的结构体,枚举类型在程序中的作用

    http://www.xue63.com/xueask-1221-12212854.html 结构和枚举类型从程序实现的角度来说,是用更接近自然语言的方式来表达数据.比如说实现2维空间的点,你可以使用 ...

  7. 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符

    [源码下载] 不可或缺 Windows Native (8) - C 语言: 结构体,共用体,枚举,类型定义符 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 结构体 ...

  8. C语言结构体和共用体_07

    概述 定义结构体类型变量的方法 结构体变量的引用 结构体变量的初始化 结构体数组 指向结构体类型数据的指针 用指针处理链表 共用体 枚举类型 用 typedef定义类型  概述 定义一个结构体的一般形 ...

  9. 07.C语言:结构体、共用体、枚举

    一.结构体 是一种复合的数据类型,由多个不同类型的数据(为结构体的成员)组成的集合. 在c语言中没有给出结构体这种类型具体的形式(名称),但是给出类定义该结构体类型的方法(格式). 在使用结构体类型时 ...

随机推荐

  1. 【PostgreSQL-9.6.3】表操作语句

    1.创建数据表 create table table_name ( 字段1 数据类型[列级别约束条件][默认值], 字段2 数据类型[列级别约束条件][默认值], 字段3 数据类型[列级别约束条件][ ...

  2. java中的位运算及移位运算

    为了方便对二进制位进行操作,Java给我们提供了以下四个二进制位操作符: &    按位与 |     按位或 ^    按位异或 ~    按位取反 Java中有三个移位运算符: 左移:&l ...

  3. 很实用的html meta标签实现页面跳转

    就算你是有很多年开发经验的web开发工程师,有着很多web开发经验,对于先进的web开发技术有着很深刻的研究,然而你却忽略了那些最最基础的东西!现在我来问你,你是否对html所有的标签都能熟练的使用呢 ...

  4. Html 页面刷新后出现闪动

    Html 页面刷新后,或跳转后,出现闪动,抖动问题 1.查看有没有用到新字体,新字体链接位置是否存在 如: @font-face { font-family: "AvantGarde-Dem ...

  5. html 报告页面样式

    修改了下HTML页面样式 页面代码 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...

  6. Selenium3+python自动化-iframe

    一.frame和iframe区别 Frame与Iframe两者可以实现的功能基本相同,不过Iframe比Frame具有更多的灵活性. frame是整个页面的框架,iframe是内嵌的网页元素,也可以说 ...

  7. 分布式系列文章 —— 从 ACID 到 CAP / BASE

    转自:https://mp.weixin.qq.com/s?amp;mid=2652037708&__biz=MzI0NDI0MTgyOA%3D%3D&idx=1&chksm= ...

  8. Bamboo Django Celery定时任务和时间设置

    1.Celery加入定时任务 Celery除了可以异步执行任务之外,还可以定时执行任务.在实例代码的基础上写个测试方法: 1 #coding:utf-8 2 from celery.task.sche ...

  9. 51nod1117 聪明的木匠【贪心+优先队列】

    一位老木匠需要将一根长的木棒切成N段.每段的长度分别为L1,L2,......,LN(1 <= L1,L2,-,LN <= 1000,且均为整数)个长度单位.我们认为切割时仅在整数点处切且 ...

  10. [jzoj 5781]【NOIP提高A组模拟2018.8.8】秘密通道 (最短路)

    传送门 Description 有一副nm的地图,有nm块地,每块是下列四种中的一种: 墙:用#表示,墙有4个面,分别是前面,后面,左面,右面. 起点:用C表示,为主角的起点,是一片空地. 终点:用F ...