1.结构体的定义
对于结构体,他有一个神奇的关键字,struct,它将一些相关联的数据打包成一个整体,方便使用。在网络协议,通信控制,嵌入式系统,驱动开发等地方,我们经常要传送的不是简单的字节流,而是多种数据组合在一起的一个整体,其表现形式就是一个结构体。结构体的功能很强大,他可以将一个个零散的数据组合在一起,方便人们对它使用和编辑。通常将结构体的内容称之为结构体成员,在没有声明是私有的还是公有的,默认为公有的。
2.结构体的初始化
首先形如struct student 就是一个简单的学生结构体,这里的struct student就相当于数据类型,这里没有定义变量。如果想要定义变量,可以在大括号的后面加上变量名,比如
{
char name[3];
int age;
char sex[3];
};
struct student
{
char name[3];
int age;
char sex[3];
}stu;这里stu就是变量名,类型为struct student。在定义了变量之后,就要对它进行初始化了,结构体变量的初始化要用一对大括号括起来,在对每个内容进行初始化。比如
int main()
{
struct student stu = { { "zhangsan", 18," men" }, { "liyu", 19, "women" } };
}
3.typdef重定义结构体的意义
typedef用于类型的重定义,那么用typedef定义的结构体有什么不同呢?
(1)typedef实现匿名结构体,例如typedef struct
{
char name;
int age;
float score;
}student; 这就是将struct ()重新定义为student类型。但是为了防止混淆,这种匿名定义在一个程序中只能使用一次。
(2)再看如下例子 typedef struct student
{
char name;
int age;
float score;
}stu_st,*stu_pst; 这里struct student stu1;和stu_st stu1; 没有区别,我们把struct student{ //} 看做一个整体,typedef就是给struct student{ //}起了一个新的名字stu_st。
另外struct student *stu2;和stu_pst *stu2;没有区别,同样的,我们把“struct student{ //} *”看做一个整体,typedef就是给struct student{ //}*起了一个新的名字stu_pst。
这样看来,再用typedef重定义结构体类型名后可减少书写的繁琐,方便使用。