引入
前面我们所见到的程序中,变量都是独立存在的,我们定义 a、b、c,那他们就只是单独存在的变量而已,在内存中的地址也是互不相干的~但是~~
实际生活中,有些数据是有内在联系的,成组出现的。
例如,一个学生,可能包含:
学号、姓名、性别、年龄、成绩、家庭地址等
这些信息往往是成组的出现。
所以,我们希望把这些数据合并在一起,成为一个组合数据,例如组成数据 student_1 的变量,这个变量中就包含了学号为1的学生的上述信息,这样我们写入和调用时就方便多了!
为什么数组不行
一个变量名,包含多重信息,咦,这不是跟数组很像吗?为什么不用数组来解决这个问题呢?因为:
数组的每个元素的数据类型是相同的,我们需要的显然是不同类型的数据,例如 姓名 和 学号。
所以,为了解决这个问题,C 语言就允许用户自己建立由不同类型数据组成的组合型数据结构
,它称为结构体
。
在其它的高级语言中,称为记录
。
举个例子
我们根据上面学生的例子,亲手建立一个结构体。
1 | struct Student |
上面的程序,我们设计指定了一个结构体类型 struct Student。经过上面的指定,struct Student 在程序中就是一个合法的类名称了。
它会向编译系统声明,我是一个结构体,我里面包含了各种不同类型的成员。
struct Student 和 int、float、char 等类型相同,只不过前者是我们设计指定的,后者是系统已经声明的。
结构体
结构体的一般形式是:
struct 结构体名
{ 成员列表 };
(千万注意后面有一个分号)
各成员都应该进行类型声明
类型名 成员名;
(不要忘记后面的分号)
成员列表也称为域表,每一个成员都是结构体中的一个域。
注意
结构体类型的名字·是由一个
关键字 struct 和 结构体名 组合而成`的(例如:struct Student)。- 结构体名是由用户自己定义的,又成为
结构体标记
。 - 花括号内的都是结构体的成员(member)
- 结构体类型并非只有一种,我们可以根据实际需要设计自己的结构体。
- 一个结构体中,可以添加另一个结构体类型的变量作为自己的成员。
1 | struct Date{ |
尾巴
这是我的个人学习笔记,主要是应付考研复习使用,充斥着一些吐槽和个人观点,并不严谨,欢迎大家参考、指正。