05 结构体嵌套结构体
结构体的成员可以是另外一个结构体。
情景:假设一个一对二的辅导。那么有 1 个老师和2个学生。那么可以创建两个结构体来存储这个数据。
那么我们可以这样试试
#include <iostream>
#include <string>
using namespace std;
struct stu
{
string name;
int age;
int scores;
};
struct tea
{
int id;
string name;
int age;
struct stu s1;
struct stu s2;
};
int main()
{
struct tea t1 = { 1,"张老师",40,{"张三",18,100},{"李四",19,101} };
cout << "教师\t\t\t学生1\t\t\t学生2\t\t\t" << endl;
cout << "教师id\t称呼\t年龄\t学生\t年龄\t分数\t学生\t年龄\t分数\t" << endl;
cout << t1.id << "\t" << t1.name << "\t" << t1.age << "\t" << t1.s1.name << "\t" << t1.s1.age << "\t" << t1.s1.scores << "\t" << t1.s2.name << "\t" << t1.s2.age << "\t" << t1.s2.scores << endl;
system("pause");
return 0;
}
结果:(环境:Windows11 (arm/Apple M VM)/Visual Studio 2022/Debug/arm64)
教师 学生1 学生2
教师id 称呼 年龄 学生 年龄 分数 学生 年龄 分数
1 张老师 40 张三 18 100 李四 19 101
请按任意键继续. . .
在结构体上,可以再次嵌套结构体(想嵌套错少都行......)。当然,可以这样赋值:
struct tea t1 = { 1,"张老师",40,{"张三",18,100},{"李四",19,101} };
当然,也可以这样
struct tea t1;
t1.id = 1;
t1.name = "张老师";
t1.age = 40;
t1.s1.name = "张三";
t1.s1.age = 18;
t1.s1.scores = 100;
t1.s2.name = "李四";
t1.s2.age = 19;
t1.s2.scores = 101;
想要获取结构体里面的结构体,那么就加上.
就可以了。比如上面的例子中,就可以是t1.s2.scores
来获取数据。
:-)