enum , typedef 关键词分析

来源:互联网 发布:中国汽车不出口知乎 编辑:程序博客网 时间:2024/05/16 19:57

enum 枚举类型 分析

 enum是一种自定义类型,是真正意义上的常量,不可以改变,不能对其使用&取地址。
 enum默认常量在前一个值的基础上依次加1,默认从0开始。
 enum类型的变量只能取定义时的离散值,只能为整形,不能为浮点数。

这里写图片描述
上面的例子中,GREEN默认值为0,BLUE的值在前一个值的基础上加1,因此BLUE=3.

enum与#define的区别:

  • #define宏常量只是简单的进行值替换,枚举常 量是真正意义上的常量
  • #define宏常量无法被调试,枚举常量可以,宏常量在编译之前被定义的值替换掉不参加编译。
  • #define宏常量无类型信息,枚举常量是一种特 定类型的常量,在使用真正的常量时,最好使用enum

typedef 关键词分析

 typedef用于给一个已经存在的数据类型重命名
 typedef并没有产生新的类型
 typedef重定义的类型不能进行unsigned和signed扩展

注意: typedef不是定义一种新的数据类型

typedef 和 #define 的区别:

  • typedef是给已有类型取别名
  • #define为简单的字符串替换,无别名的概念

举例说明:

#define PCHAR char*typedef char* pc int main(){    char c;    pc p1,p2;    PCHAR p3,p4;    p1 = &c;    p2 = &c;    p3 = &c;    p4 = &c;    while(1);    return 0;}

在上面的程序中,p4 = &c一句会报错,前面3句不会报错。原因:typedef是给类型取别名,p1和p2都是字符指针,define是字符串文本的替换,替换后为 char *p3,p4; 这样p3为字符指针,p4则成为char字符类型不是指针,因此会报错。

0 0
原创粉丝点击