直接通过代码来分析typedef和define的区别:
#include <stdio.h>
#define P1 int* //这里分别用define和typedef两个整型指针类型;
typedef int* P2;
int main (void)
{
int a = 1, b = 2;
P1 p1, p2; //用define定义的,此时定义变量时相当于int *p1, p2;
P2 p3, p4; //用typedef定义的,此时定义变量时相当于int *p3, *p3;
p1 = &a, p2 = a; //此处若是p2 = &a的话,在编译时,编译器会提出警告。也就
//证明了p2是一个整型变量,而不是一个整型指针。
p3 = &b, p4 = &b;
printf ("This is the result of define: %d %d\n\n", p1, p2);
printf ("This is the result of typedef: %d %d\n\n", p3, p4);
return 0;
}
用define定义的,定义变量时相当于int *p1, p2;define是一条预处理命令,语句是在预处理时执行的,所以后面也不用加 ‘;’,在预处理过程中就把P1替换int *。
用typedef定义的,定义变量时相当于int *p3, p3;typedef语句是在编译时执行的,将所有的P2替换成int。
若是p2 = &a的话,在编译时,编译器会提出警告。也就证明了p2是一个整型变量,而不是一个整型指针。
(本人小白,若有不当之处,欢迎各位大佬指出!)
Hello World!