首先,typedef是关键字,而define不是关键字。
其次,typedef要写成语句的形式,即末尾要加分号 (;),而#define是宏定义,末尾没有分号 。
再就是,typedef是为已经存在的数据类型起个别名,用这个别名来表示这个数据类型,如:
typedef int Elemtype;//int是原名,Elemtype是别名
Elemtype data;//定义了一个int类型的变量,等价int data;
#define是定义一个宏名来表示跟在其后面的一个字符串或者表达式,它只是只是作简单的替换,在预处理阶段,编译器会将所有的宏名用其后面的字符串或者表达式作替换,而不做任何运算。如:
#define 宏名 字符串或者表达式
#define N 10//用宏名N来表示10,调用:int a[N]; 如果代码中多处用到了N,只需要改宏定义就能更改全部位置的值,非常方便。
#define Max(a,b) (a>b?a:b)//用带参数的宏名Max来表示(a>b?a:b),
调用:int a=3,b=4;printf("%d\n",Max(a,b));
预处理后:int a=3,b=4;printf("%d\n",(a>b?a:b));