结构体

我们已经学习了许多类型:算术类型、数组类型、指针类型等等;但是我觉得还不够。考虑这样的情形,如果我想用一种数据类型来存储编号,我会考虑用 unsigned int;如果我想用一种数据类型来存储名字,我会考虑用 char[30] 数组来存放字符串。那么如果我想存储一个“学生的信息”,它同时包含了编号和名字,我该如何做呢?

目前而言,我们恐怕只能用两个变量分别存储。然而这样做效率很低,操作起来不方便。因此 C++ 提供了一个叫做结构体类型的东西,它允许我们能够通过组合已有的数据类型来构建新的类型。比如,刚刚提到了一个“学生信息”同时需要编号和名字,那么我就这样做:

struct Student {
    unsigned int number;
    char name[30];
};

这一串的意思就是,定义一个叫做 Student 的新类型。从此之后,你可以:

Student a, b;

这样,声明并定义 abStudent 类型的变量。那么我们怎么使用它呢?你可以这样做:

a.number = 12345;
// 令 a.name 为 "Bob",但是数组不能直接赋值,所以只能逐元素处理
a.name[0] = 'B';
a.name[1] = 'o';
a.name[2] = 'b';
a.name[3] = '\0';

运用 . 这个写法,你就可以访问构成 Student 类型的数据。

最近更新:
代码未运行