Typedef与#define的区别
2016-10-09 22:47
190 查看
Typedef与#define的区别
最近学习数据结构时,书上源码往往是ElementType类型,无法直接使用,需要手动定义为int或其它类型,这时候,就出现了两种方式#define ElementType int //将所有的ElementType替换为int typedef int ElementType; //给int取一个别名叫ElementType
虽然在小程序中,这两者效果一致,但是却有着一些大区别。
Markdown和扩展Markdown简洁的语法
Typedef的好处
构造新类型typedef int Array5[5]; //构造一个长度为5的整形数组类型 Array5 a1, a2; //等同于 int a1[5], a2[5];
区别
处理时间#define#define的处理是在编译过程之中,过多的#define操作会使得编译时间增长。typedef在C++中被当作语句处理,占用运行时间,过多的typedef会使得程序运行时间增长。
作用域不同: typedef有其自己的作用域,而#define一次使用后,作用于全局。
/* typedef 与局部变量一样,有固定的作用域 */ void Fun1( void ) { typedef int a; //将int取别名为a a Length = 0; //同 int Length = 0; } void Fun2( void ) { a Length = 0; //错误!找不到a的定义 }
/* #define作用于全局 */ void Fun1( void ) { #define a int a Length = 0; //同 int Length = 0; } void Fun2( void ) { a Length = 0; //正确,定义过a }
对指针的操作不同
Typedef int * pint; //将int*取别名为 pint Const pint p; //p不可更改,p指向的内容可以更改,相当于 int * const p; pint s1, s2; //s1和s2都是int型指针
#define Pint int * // 出现Pint的地方替换为int * Const Pint p; // p可以更改,p指向的内容不能更改 // 相当于 const int *p;或 int const *p Pint s3, s4; // 相当于int * s3,s4;只有一个是指针
相关文章推荐
- typedef和#define的定义与区别
- typedef和#define的用法与区别
- typedef和#define的用法与区别
- typedef 和#define定义别名的区别
- typedef 和#define定义别名的区别
- #define和typedef的区别
- typedef和#define的区别
- typedef和#define的用法与区别
- typedef与#define 的区别
- typedef和#define的用法与区别
- #define和typedef的区别
- #typedef与#define的区别
- typedef和#define的主要区别
- typedef与#define 的区别
- typedef和#define的用法与区别
- typedef与#define区别
- typedef和#define的用法与区别
- Typedef和#define的区别
- typedef 和#define定义别名的区别
- typedef和#define的用法与区别