C语言中的枚举与宏定义 及其不同之处

C语言的枚举与宏定义

有人可能会觉得这个太easy了,本来也没想写这篇文章,但是想想觉得有必要用自己的语言组织一下记下来,跟学习swift的枚举做类比,好理解一些。


一、枚举


1. what:

1)它看起来是这样的:


enum week
{
    MON,
    TUES,
    WED,
    THUR,
    FRI,
    SAT,
    SUN,
};

2)是符号常量的集合

枚举中定义的符号,其本质就是为int型的常量

枚举定义时一般为全局

3)是“值替身”。

用符号来代替数字,用符号来识别


2. why:为什么需要枚举

1)对数字进行符号化

1.用数字:当程序代码多了以后,单纯使用数字不能让程序员马上理解该数字代表的含义,如看到数字0,可能需要查文档才知道具体意义;

2.用枚举:意义明显,如看到MON能马上理解是代表星期一的数字

2)不是必须的,与宏定义类似

与宏定义可互换

3. how:

枚举的定义与使用可参考这篇文章:点击打开链接




二、宏定义


1. what:

1)它看起来是这样的:

#define MON   0
#define TUES  1
#define WED   2
#define THUR  3
#define FRI   4
...

2. why:

1)宏定义类似全局变量,可以改一处,则全部都改掉,方便修改和管理,不用一个一个的去改。

2)在程序预处理时,是将标识符原封不动地替换成标识符后面的变量

3. how:

可参考这篇文章:宏定义方法总结




三、枚举与宏定义区别:


1)枚举是“整”的: 多个有关联的符号放在一个枚举中(如一周有7天,一年的12个月等)。

      宏是“散”的

2)同一程序里,枚举定义的符号不能重名

3)                                         枚举                                        宏

作用时期:             程序运行时                        预处理(替换代码段)

存储形式:             全局变量->数据段             代码段

  消耗CPU

4)什么情况下更适合用枚举?

当需要定义的变量是一个有限集合的时候













你可能感兴趣的:(C,笔记)