C语言中建立数据类型-建立结构体类型-学习笔记-44

引入

前面我们所见到的程序中,变量都是独立存在的,我们定义 a、b、c,那他们就只是单独存在的变量而已,在内存中的地址也是互不相干的~但是~~
实际生活中,有些数据是有内在联系的,成组出现的。
例如,一个学生,可能包含:

学号、姓名、性别、年龄、成绩、家庭地址等

这些信息往往是成组的出现。
所以,我们希望把这些数据合并在一起,成为一个组合数据,例如组成数据 student_1 的变量,这个变量中就包含了学号为1的学生的上述信息,这样我们写入和调用时就方便多了!

为什么数组不行

一个变量名,包含多重信息,咦,这不是跟数组很像吗?为什么不用数组来解决这个问题呢?因为:

数组的每个元素的数据类型是相同的,我们需要的显然是不同类型的数据,例如 姓名 和 学号。

所以,为了解决这个问题,C 语言就允许用户自己建立由不同类型数据组成的组合型数据结构,它称为结构体
在其它的高级语言中,称为记录

举个例子

我们根据上面学生的例子,亲手建立一个结构体。

1
2
3
4
5
6
7
8
9
struct Student
{
int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
}; //注意,这里有一个分号

上面的程序,我们设计指定了一个结构体类型 struct Student。经过上面的指定,struct Student 在程序中就是一个合法的类名称了。
它会向编译系统声明,我是一个结构体,我里面包含了各种不同类型的成员。
struct Student 和 int、float、char 等类型相同,只不过前者是我们设计指定的,后者是系统已经声明的。

结构体

结构体的一般形式是:

struct 结构体名
{ 成员列表 };
(千万注意后面有一个分号)

各成员都应该进行类型声明

类型名 成员名;
(不要忘记后面的分号)

成员列表也称为域表,每一个成员都是结构体中的一个域。

注意

  1. 结构体类型的名字·是由一个关键字 struct 和 结构体名 组合而成`的(例如:struct Student)。
  2. 结构体名是由用户自己定义的,又成为结构体标记
  3. 花括号内的都是结构体的成员(member)
  4. 结构体类型并非只有一种,我们可以根据实际需要设计自己的结构体。
  5. 一个结构体中,可以添加另一个结构体类型的变量作为自己的成员。
1
2
3
4
5
6
7
8
9
10
11
12
struct Date{
int day;
int month;
int year;
};

struct Teacher{
char name[20];
char sex;
int age;
struct Date birthday; //前面的 struct Date 是类型名,后面的 birthday 是变量名。
}; //切记加分号

尾巴

这是我的个人学习笔记,主要是应付考研复习使用,充斥着一些吐槽和个人观点,并不严谨,欢迎大家参考、指正。


-------------The End-------------
欢迎请我喝咖啡哦~!