typedef和define的区别

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;只有一个是指针。
相关文章
相关标签/搜索