在了解struct和typedef struct之前,我们先学习下typedef的定义和用法。
typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。
C语言里typedef的解释是用来声明新的类型名来代替已有的类姓名,例如:typedef int CHANGE;
指定了用CHANGE代表int类型,CHANGE代表int,那么:
int a,b;和CHANGE a,b;是等价的、一样的。方便了个人习惯,熟悉的人用CHANGE来定义int。
现在回到struct和typedef struct的区别这个问题上来
归纳起来就是在使用时,是否可以省去struct这个关键字
举例来说:
在C中定义一个结构体类型时如果要用typedef:
typedef struct Student
{
int no;
char name[12];
}Stu,student;
于是在声明变量的时候就可:Stu stu1;或者:student stu2;(Stu 和student 同时为Student的别名)
如果没有typedef即:
struct Student
{
int no;
char name[12];
}Stu;
就必须用struct Student stu1;或者struct Stu stu1来声明
另外这里也可以不写Student
typedef struct
{
int no;
char name[12];
}Stu;