c语言 enum typedef,【C语言复习(三)】enum、typedef 和#define的分析与区别

1、enum

enum关键字用来定义一种自定义类型,称之为枚举类型,它的值会在定义时一一列举出来,用它定义的变量只限于列举出来的值的范围内;

例如:

enum Color

{

red,yellow,blue,white,black

};

花括号中的值成为枚举元素或枚举常量,枚举类型的枚举元素在C中被当作常量处理,不能对其赋值,每一个枚举元素都代表一个整数,不能为浮点数等等,默认依次为0,1,2,3.....

这个数值只能在定义时显式的指定,以后不能更改,被指定的枚举元素的后面的元素的值依次等于前一个元素的值加1;

枚举元素是真正意义上的常量,我们是不能够通过取地址符拿到它的地址;

一个枚举类型的枚举元素可以直接使用,也可以定义枚举变量赋值后再使用;

例如:

#include

enum Color

{

red,yellow,blue=7,white,black

};

int main()

{

enum Color cc;

cc=blue;

printf("直接使用枚举元素:%d\n",white);

printf("定义枚举变量赋值后使用:%d\n",cc);

return 0;

}

枚举类型和#define的区别

#define通常用来定义宏常量,也称为宏定义,它只是简单的进行值替换,枚举常量才是真正意义上的常量;

#define宏常量无法被调试,枚举常量可以;

#define宏常量无类型信息,枚举常量是一种特定类型的常量;

2、typedef

typedef 具体的意义是什么??

它用于给一个已存在的类型定义别名,也可说重命名;这一过程并没有产生新的类型,它重定义的类型不能进行unsigned和signed扩展;

typedef 和 #define 的区别:

typedef 是给已有类型取别名;

#define 是简单的字符串替换,没有别名的概念;

具体看如下代码:

typedef char* PCHAR;

PCHAR p1,p2;

#define PCHAR char*;

PCHAR p3,p4;

以上的p1,p2,p3,p4有不同么?

实际上是有不同的,第一个实际上等价于

char* p1,char* p2;

而第二个实际上等价于:

char* p3,p4;

这时候,p3属于char*型变量,而p4是char型变量!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值