zoukankan      html  css  js  c++  java
  • 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个整数元素的数组)。

        

  • 相关阅读:
    [产品设计]我对移动互联网产品的观点
    [Android阅读代码]圆形旋转菜单CircleMenu
    [Android代码阅读]分类简介
    [Android学习笔记]Android调试
    [Android]ADT Run时候报错:The connection to adb is down, and a severe error has occured
    [Android学习笔记]使用ListView
    [Android]Button按下后修改背景图
    [.NET Framework学习笔记]一些概念
    ubuntu fcitx 安装 使用
    nyoj-626-intersection set
  • 原文地址:https://www.cnblogs.com/NongSi-Net/p/4251450.html
Copyright © 2011-2022 走看看