结构体小结

来源:互联网 发布:linux jdk6安装教程 编辑:程序博客网 时间:2024/06/09 15:16

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重定义结构体类型名后可减少书写的繁琐,方便使用。




原创粉丝点击