在C++和C中typedef struct都是定义结构体类型,typedef struct name{}alias(别名),其中 alias代表的是结构体的数据类型。
//C
typedef struct Link {
int data;
struct Link *next;
}link;
//link 是 struct Link的别名
struct Link {
int data;
struct Link *next;
}
使用时struct Link代表数据类型
//C++
typedef struct Link {
int data;
struct Link *next;
}link;
struct Link {
int data;
Link *next;
}
使用时Link代表数据类型,C++的struct相当于class,struct name{}nm; nm是name的一个对象。
typedef struct {
int num;
int age;
}aaa,bbb,ccc;
//相当于
typedef struct {
int num;
int age;
}aaa;
typedef aaa bbb;
typedef aaa ccc;
也就是说aaa,bbb,ccc三者都是结构体类型。声明变量时用任何一个都可以,C和C++中都一样。但是要注意的是这个在c++中如果写掉了typedef关键字,那么aaa,bbb,ccc将是截然不同的三个对象。