- enum是一种自定义类型,默认的第一个值为0;
- enum默认常量在前一个值的基础上依次加1;
- enum类型的变量只能取定义时的离散值。
enum Color
{
GREEN,
RED = 2,
BLUE
};
int main()
{
printf("%d\n", GREEN); // 0
printf("%d\n", RED); // 2
printf("%d\n", BLUE); // 3
return 0;
}
- #define宏常量只是简单的进行值/字符串替换,枚举常量是真正意义上的常量;
- #define宏常量无法被调试(已经被替换为常量/字符串),枚举常量可以;
- #define宏常量无类型信息,枚举常量是一种特定类型的常量。
- typedef用于给一个已经存在的数据类型重命名;
- typedef并没有产生新的类型;
- typedef重定义的类型不能进行unsigned和signed扩展。
- typedef是给已有类型取别名;
- #define为简单的字符串替换,无别名的概念。
typedef char* PCHAR; //这里PCHAR为char*的别名,为一个整体
PCHAR p1,p2;
p1,p2都为指针地址
#define PCHAR char* //这里表示有PCHAR的地方用char*代替
PCHAR p3, p4; //这里替换后为 char* p3, p4也可以表示为char (*p3), p4;
p3为指针地址,p4为char类型