关键字--enum和typedef

  enum即枚举。
  枚举的用法如下:
    1、成员没有赋值
      enum test
      {
        A,
        B,
        C,
        D,
        E
      };
      如果枚举的成员都没有赋值,它们的数值就默认从0开始依次递增1.如上A=1,B=2,C=3...

    2、成员有赋值
      enum test
       {
        A=2,
        B,
        C,
        D=10,
        E
      };
      如果枚举的成员有赋值,则未赋值的成员就从被赋值的成员数值依次递增1,如上A=2,B=3,C=4,D=10,E=11.

    *注意:
      1、枚举的成员都是常量,不能被重新赋值。试图在代码中使用‘A=5;’来修改A的数值是错误的。
      2、枚举的成员只能被赋以整数(可以为负数),不能赋以浮点数等其他类型数值。


  typedef:
  typedef的作用是给已知的数据类型起一个别名。
  例如:
    typedef unsigned int uint32_t;

    typedef struct student
    {
      int id;
      char name[20];
      unsigned int age;
    } STU;
    上面的'uint32_t a;'等效为 'unsigned int a;',同理'STU m;'等效为‘struct student m;’
    利用typedef关键字可以提高代码的可移植性。

  typedef与#define的区别:
    1、顺序的差别
      typedef关键字中用户定义的‘代号’在后面,而#define宏替换中用户定义的‘代号’在前面。

    2、含义的差别
      #define宏替换只是编译器在预编译时简单的进行代码的替换;typedef是定义一种数据类型。
      通过一个例子来对比:
        #define PCHAR char *
        PCHAR a,b;
        //等效为char * a,b; a是一个char型指针,b是char型变量

        typedef char * PCHAR;
        PCHAR a,b;
        //等效为char *a, *b; a和b都是char型指针

 

 

 

 

posted @ 2013-05-16 18:26  反光镜的博客  阅读(323)  评论(0编辑  收藏  举报