第一个例子
#define PINT int*
typedef int* pint;
int main()
{
pint a,b;
PINT c,d;
}
首先a和b都是int*类型
我们粗心的会认为c和d也是int*类型,实际上c是int*类型而d是int类型因为define是文本替代,在编译期间
PINT c,d; 换成 int *c,d; ‘*’与c结合,所以只有c是int*类型的
而typedef将int* 定义成一种全新的类型,名叫pint
第二个例子
typedef struct student
{
char name[20];
int age;
} std;
代码的意图是将结构体类型 struct student 定义为一种全新的类型std
这样在定义一个struct student类型变量时候,可直接这样写:std a;//a代表变量名
第三个例子
typedef struct student
{
char name[20];
int age;
} * pstd;
此代码的意图不是定义了一个struct student*类型的变量,而是给struct student*类型取了个全新的名字pstd
struct student* p 等价于 pstd p