两个例子告诉你#define和typedef哪个用来定义类型比较好

 
 

第一个例子

#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

猜你喜欢

转载自blog.csdn.net/qq1910084514/article/details/80397145