1:typedef是一种在计算机编程语言中用来声明自定义数据类型,配合各类原有数据类型来达到简化编程的目的的类型定义关键字。 #define是预处理指令.编程
1.1:typedef功能是用户为已有数据类型取别名。数组
1.2:用typedef定义数组、指针、结构等类型将带来很大的方便,不只使程序书写简单并且使意义更为明确,于是加强了可读性。例如:编程语言
typedef int a[10];//表示a是整型数组类型,数组长度为10。spa
a s1,s2;//彻底等效于:int s1[10],s2[10] ; 指针
#define是C中定义的语法,typedef是C++中定义的语法,两者在C++中能够通用,但#define成了预编译指令typedef当成语句处理。Typedef和define均可以用来给对象取一个别名,可是二者却有着很大不一样。code
1:两者执行时间不一样orm
关键字typedef在编译阶段有效,因为是在编译阶段,所以typedef有类型检查的功能。对象
Define则是宏定义,发生在预处理阶段,也就是编译以前,它只进行简单而机械的字符串替换,而不进行任何检查。作用域
2:功能不一样字符串
Typedef用来定义类型的别名,这些类型不仅包含内部类型(int,char等),还包括自定义类型(如struct),能够起到使类型易于记忆的功能。
#define不仅是能够为类型取别名,还能够定义常量、变量、编译开关等。
3:做用域不一样
#define没有做用域的限制,只要是以前预约义过的宏,在之后的程序中均可以使用。而typedef有本身的做域。
4:对指针的操做
两者修饰指针类型时,做用不一样。
Typedef int * pint; #define PINT int * Const pint p;//p不可更改,p指向的内容能够更改,至关于 int * const p; Const PINT p;//p能够更改,p指向的内容不能更改,至关于 const int *p;或 int const *p; pint s1, s2; //s1和s2都是int型指针 PINT s3, s4; //至关于int * s3,s4;只有一个是指针。