定义结构体时加typedef与不加typedef的区别

375 阅读1分钟
struct node{
    int data;
}a,b;

不加typedef时,相当于定义了结构体node和node的两个变量。

typedef struct node{
    int data;
}a,b;

加上typedef时,除了定义了结构体node,又给该结构体起了别名a和b,因此a和b可以像类型一样用来定义结构体变量。另外,因为起了别名,所以不起结构体名也没关系,可以直接typedef struct。

因此,不加typedef时,在后续使用该结构体定义其他变量时需要加结构体名,例如 :

struct node c;

当加了typedef后,使用该结构体定义变量时,可以直接通过别名来定义,例如 :

a c;

一般使用typedef同时定义结构类型和结构指针类型,例如 :

typedef struct node{
    int i;
}a,*b;

a c;
b p=&q;
在写树的代码时,都需要加typedef,链表可以不用加。