C/C++——C语言中的枚举(enum)

[来源] 达内    [编辑] 达内   [时间]2012-06-19

枚举是一个被命名的整型常数的集合, 枚举在日常生活中很常见。

  枚举是一个被命名的整型常数的集合, 枚举在日常生活中很常见。所以今天小编和大家一起来讨论下C语言中的枚举。
    例如表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,
SATURDAY, 就是一个枚举。
    枚举的说明与结构和联合相似, 其形式为:
          enum 枚举名{
               标识符[=整型常数],
               标识符[=整型常数],
               ...
               标识符[=整型常数],
          } 枚举变量;
    如果枚举没有初始化, 即省掉"=整型常数"时, 则从第一个标识符开始,  顺
次赋给标识符0, 1, 2, ...。但当枚举中的某个成员赋值后, 其后的成员按依次
加1的规则确定其值。
    例如下列枚举说明后, x1, x2, x3, x4的值分别为0, 1, 2, 3。
     enum string{x1, x2, x3, x4}x;
    当定义改变成:
      enum string
      {
          x1,
          x2=0,
          x3=50,
          x4,
      }x;
    则x1=0, x2=0, x3=50, x4=51
    注意:
    1. 枚举中每个成员(标识符)结束符是",",  不是";", 最后一个成员可省略
","。
    2. 初始化时可以赋负数, 以后的标识符仍依次加1。
    3. 枚举变量只能取枚举说明结构中的某个标识符常量。
    例如:
      enum string
      {
          x1=5,
          x2,
          x3,
          x4,
      };
     enum strig x=x3;
    此时, 枚举变量x实际上是7。
接着,小编再和大家说说类型说明。
    类型说明的格式为:
     typedef 类型 定义名;
    类型说明只定义了一个数据类型的新名字而不是定义一种新的数据类型。这
里类型是Turbo C许可的任何一种数据类型。定义名表示这个类型的新名字。
    例如: 用下面语句定义整型数的新名字:
     typedef int SIGNED_INT;
    使用说明后, SIGNED_INT就成为int的同义词了, 此时可以用SIGNED_INT 定
义整型变量。
    例如:  SIGNED_INT i, j;(与int i, j等效)。
    但 long SIGNED_INT i, j; 是非法的。
    typedef同样可用来说明结构、联合以及枚举。
    说明一个结构的格式为:
      typedef struct{
          数据类型  成员名;
          数据类型  成员名;
          ...
        } 结构名;
    此时可直接用结构名定义结构变量了。例如:
     typedef struct{
          char name[8];
          int class;
          char subclass[6];
          float math, phys, chem, engl, biol;
      } student;
      student Liuqi;
    则Liuqi被定义为结构数组和结构指针。
    在第二节讲过的文件操作中, 用到的FILE就是一个已被说明的结构, 其说明
如下:
     typedef struct
     {
          short level;
          unsigned flags;
          char fd;
          unsigned char hold;
          short bsize;
          unsigned char *buffer;
          unsigned char *curp;
          unsigned istemp;
          short token;
     } FILE
    这个结构说明已包含在stdio.h中, 用户只要直接用FILE 定义文件指针变量
就可以。事实上, 引入类型说明的目的并非为了方便, 而是为了便于程序的移植。

资源下载