define与typedef的区别

例:

#define PI 3.14

typedef  int*  int_p;

从上面的两条语句可以看出:

1、#define是预处理命令,在编译预处理时进行单纯的替换工作,不做正确性检查,而typedef是在编译时处理的,可理解为“为某个类型寻找另一种书写方式”

    即typedef  int*  int_p;该语句为int*引入了一个新的助记符int_p,可以在程序中用int_p声明指向int型的指针变量

    如typedef  int*  int_p;

       int_p pA,pB;

上述两条语句声明了两个指向int型的指针变量pA和pB

 2、#define不是语句,后面不加分号,而typedef需加分号

 3、typedef后面是条完整的语句,如语句typedef  int*  int_p;去掉typedef后,变为int*  int_p;就是完整的语句,它声明了int型的指针变量int_p,加上typedef后,int_p相当于int*的别名(或是助记符)

原文地址:https://www.cnblogs.com/kkdd-2013/p/3337246.html