【C语言复习(三)】enum、typedef 和#define的分析与区别
2014-06-12 16:09
302 查看
1、enum
enum关键字用来定义一种自定义类型,称之为枚举类型,它的值会在定义时一一列举出来,用它定义的变量只限于列举出来的值的范围内;例如:
enum Color { red,yellow,blue,white,black };
花括号中的值成为枚举元素或枚举常量,枚举类型的枚举元素在C中被当作常量处理,不能对其赋值,每一个枚举元素都代表一个整数,不能为浮点数等等,默认依次为0,1,2,3.....
这个数值只能在定义时显式的指定,以后不能更改,被指定的枚举元素的后面的元素的值依次等于前一个元素的值加1;
枚举元素是真正意义上的常量,我们是不能够通过取地址符拿到它的地址;
一个枚举类型的枚举元素可以直接使用,也可以定义枚举变量赋值后再使用;
例如:
#include <stdio.h> 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型变量!
相关文章推荐
- c语言学习笔记(5)enum和typedef分析
- C语言之enum,sizeof,typedef分析
- 黑马程序员——C语言日志——typedef的使用以及和#define的区别
- C语言中typedef 和 #define 的区别
- enum和typedef 与#define宏定义的区别
- 在C语言中 #define dPS struct s * 与 typedef struct s * tPS; 的 这两种声明的区别
- C语言--typedef 和 #define 的区别
- C语言中的typedef(包含与#define的区别)
- 程序猿之---C语言细节21(#define和typedef区别、结构体细节)
- typedef和#define的用法与区别
- typedef 和#define定义别名的区别
- typedef和#define的用法与区别
- typedef 和#define定义别名的区别
- typedef和#define的用法与区别
- typedef和#define的用法与区别
- typedef和#define的区别
- typedef和#define的用法与区别
- typedef与#define 的区别
- typedef和#define的用法与区别
- #typedef与#define的区别