结构体的声明
结构体在C语言中属于复杂数据类型。
像整型、浮点型、字符型、数组、指针等简单数据类型只能定义一些简单的数据信息,远远不能满足程序设计的需求。因为有些复杂的数据信息仅仅靠这些数据类型是无法完整描述的。比如:一个学生的信息包含了姓名、学号、年龄等。原有的数据类型都无法单独的描述“学生”这种数据类型。
为了增强C语言的数据描述能力,C语言允许开发者定义自己的数据类型。这些数据类型称为复杂数据类型。C语言对开发者定义的数据类型的复杂度没有限制。
结构体的基础知识
结构体是一些值的集合,这些值称为成员变量。结构体的每个成员可以是不同类型的变量。
当我们去描述一个对象,这个对象包含了多个成员,这些成员是不同类型的变量。比如:要开发一个电子学生档案。学生这个对象,包含了姓名、学号、年龄等不同类型的变量,那么学生就可以被称为一个结构体,姓名、学号、年龄就可以叫做成员变量。
结构体的声明
struct tag
{
member-list; //结构体所包含的变量或数组
}variable-list; //variable-list 变量名列表
结构体是一种集合,它里面包含了多个变量或数组,它们的类型可以相同,也可以不同,每个这样的变量或数组都称为结构体的成员(Member)。
例如描述一个学生:
struct stu{
char name[20]; //姓名
int num; //学号
int age; //年龄
char group; //所在学习小组
float score; //成绩
};
int main()
{
struct Stu s;//创建结构体变量
return 0;
}
上述代码中的struct被叫做结构体关键字,Stu被叫做结构体标签,他们两个结合起来strcut Stu叫结构体类型。而最后不可缺少的有个“;”。这里这个分号就等价于“int a;”结尾这个分号。看到这里我们不妨将对比一下。
这里strcut Stu与int是等价的。
那么定义一个结构体类型要占空间吗?不占。这只是个类型,就像C语言中本来就有个int型,int有占空间吗?没有。只有用int创建一个变量时会占用空间。结构体类型也是同理,只有在创建结构体变量时会占用。
大括号后面的variable-list是做什么的呢?
struct stu{
char name[20]; //姓名
int num; //学号
int age; //年龄
char group; //所在学习小组
float score; //成绩
}s1,s2,s3;//s1,s2,s3 是三个全局的结构体变量
在大括号后面创建的变量值就是全局变量。这种定义全局变量的方法叫做直接定义法,我们后面会提到。
如果对数据结构有一定了解的话