2015-10-23 enum和typedef关键字听课笔记

1 enum关键字

1.1 enum定义的常量是真正意义上的常量,不同于用const定义的只读变量。它不是存储在内存之中的,因此我们不能通过指针来访问enum定义的常量的地址。

1.2 关于用#define定义的常量和枚举常量的不同

1.2.1 #define定义的常量只是简单地进行纯文本的替换,而枚举常量是真正意义上的常量。

1.2.2 #define定义的常量是无法被调试的,枚举常量可以。

1.2.3 以后要定义真正的常量时,尽量采用enum。

 

2 typedef关键字

typedef关键字用于给一个已经存在的数据类型重命名,但并没有产生新的数据类型。

typedef重定义的类型不能进行unsigned 和signed扩展。

2.1 typedef关键字和#define的区别

2.1.1 typedef是用于给已有的类型取别名,而#define只是简单的字符串替换,无别名概念。

eg1:

typedef char * PCHAR;

PCHAR p1,p2;

eg2:

#define PCHAR char *

PCHAR p3,p4;

这两段代码有什么不同之处?这也是#define和typedef的不同之处。

在eg1中,由于typedef的作用是给一个已经存在的类型char *取一个别名PCHAR,故:PCHAR p1,p2;就相当于:char * p1;char * p2;也就是说定义的p1和p2是两个指向char型变量的指针变量。

而在eg2中,#define只是进行纯文本的替换。于是,PCHAR p3,p4相当于  char * p3,p4;也就是说定义的p3是一个指针变量,而p4是一个char型的变量,这就和作者的原意不一致了。

 

转载于:https://www.cnblogs.com/wan0807/p/4905012.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值