typedef struct 和 struct 定义结构体的区别
1. 定义结构体的方式
struct 结构体名
{
类型 变量名;
类型 变量名;
};
typedef struct 结构体名
{
类型 变量名;
类型 变量名;
}结构体别名1,结构体别名2;
typedef struct
{
类型 变量名;
类型 变量名;
}结构体别名;
struct 是声明结构体类型时所必须要使用的关键字,不能省略!
{ } 内 是结构体包含的子项,称为结构体成员
2. C语言中定义结构体
- 不用typedef直接定义
struct Teacher
{
int i;
}Tea1,Tea2,Tea3; //这里的Tea1、2、3都是是结构体变量
结构体是一种数据类型,那么你就可以用它来定义变量。上图是定义结构体的同时定义了结构体变量。
上图相当于
struct Teacher
{
int i;
}Tea1;
typedef Tea1 Tea2;
typedef Tea1 Tea3;
如果要声明结构体变量,C语言中就必须这样:struct Teacher a。但是这样感觉很麻烦,多写一个struct就很费劲了,于是就有了下面的typedef。
- 用 typedef
typedef struct Teacher
{
int i;
}Tea; //Tea是结构体别名
这儿使用就要先声明一下结构体变量: Tea a。这样就简洁多了,还省略了代码量。还有一种更简洁的省略掉Teacher,如下所示:
- 省略掉结构体名
typedef struct
{
int i;
}Tea; //Tea是结构体别名
3. C++中定义结构体
struct Teacher
{
int i;
}Tea; //这里的Tea是一个结构体类型的变量
typedef struct Teacher
{
int i;
}Tea; //这里的Tea就是结构体别名了
可以有如下定义方式:
(1)struct Teacher 变量名
(2)Teacher 变量名
(3)Tea 变量名