struct和typedef struct
1 typedef
typedef
为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char
等)和自定义的数据类型(struct
等)。在编程中使用typedef
目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。例如:
1 | typedef long byte_4;//给已知数据类型long起个新名字,叫byte_4 |
2 typedef与struct结合使用
1 | typedef struct tagMyStruct |
这段代码实际上完成两个操作:
定义一个新的结构体类型
tagMyStruct
1
2
3
4
5
6
7struct tagMyStruct
{
int iNum;
long lLength;
};
struct tagMyStruct varName;//C语言中 varName是变量 struct tagMyStruct是变量类型
tagMyStruct varName//C++中 varName是变量 tagMyStruct是变量类型typedef
为这个新的结构起了一个名字,叫MyStruct
。1
typedef struct tagMyStruct MyStruct;
因此,
MyStruct
实际上相当于struct tagMyStruct
,可以使用MyStruct varName
来定义变量。
3 C和C++的区别
在C中定义一个结构体类型要用typedef
:
1 | //C语言中 定义结构体 |
1 | //另外这里也可以不写Student(于是也不能struct Student stu1;了,必须是Stu stu1;) |
c++中
1 | //但在c++里很简单,直接定义结构体类型Student |
1 | struct Student |
1 | //在c++中如果用typedef的话,又会造成区别 |
4 总结
1 | typedef struct tagMyStruct |
在C中,这个申明后申请结构变量的方法有两种:
1
2struct tagMyStruct variableName;
MyStruct variableName;在c++中可以有
1
2
3struct tagMyStruct variableName;
MyStruct variableName;
tagMyStruct variableName;