typedef struct和struct的区别和用法
typedef是类型定义的意思,struct是定义结构体的意思,而typedef strcut是为这个结构体定义一个别名的意思;
比如:
typedef struct 结构名 { 类型 变量名; 类型 变量名; ... } 结构别名;
这想当于2步操作:
1)、
struct 结构名 { 类型 变量名; 类型 变量名; ... } ;
2)、typedef struct 结构名 结构别名;
此时,结构别名 = struct 结构名;
因为在C语言中,使用“struct 结构名{...};”定义一个结构的话,必须使用“struct 结构名 对象名”来定义一个对象。所以为了使用的方便,我们给这个结构名起来个别名叫“结构别名”,即
typedef struct 结构名 { 类型 变量名; 类型 变量名; ... } 结构别名;
当我们将上述代码的typedef去掉是,变成下面的代码:
struct 结构名 { 类型 变量名; 类型 变量名; ... } 结构对象;
这表示使用上述代码定义的是一个结构名和该结构明的一个结构对象。比如:
struct Student { int a; }stu1;//stu1是一个变量
typedef struct Student2
{
int a;
}stu2;//stu2是一个结构体类型
使用时可以直接访问stu1.a,但是stu2则必须先 stu2 s2,然后 s2.a=10;
上述区别都是在C语言中。
在C++中,如果定义了下面的代码:
struct tagPOINT1 { int x; int y; };
则可以直接写:结构名 对象名,即:tagPOINT1 p1来定义对象p1;但是在C语言中必须加上struct,即:struct tagPOINT1 p1来定义对象p1;
此外,在C中,struct不能包含函数。在C++中,对struct进行了扩展,可以包含函数。