问题描述:
根据下列代码和结果回答下列问题。
// Created by 黑马程序员.
#include "iostream"
using namespace std;
//学生结构体定义
struct student
{
//成员列表
string name; //姓名
int age; //年龄
int score; //分数
};
//教师结构体定义
struct teacher
{
//成员列表
int id; //职工编号
string name; //教师姓名
int age; //教师年龄
struct student stu; //子结构体 学生
};
int main() {
system("chcp 65001");
struct teacher t1;
t1.id = 10000;
t1.name = "老王";
t1.age = 40;
t1.stu.name = "张三";
t1.stu.age = 18;
t1.stu.score = 100;
cout << "教师 职工编号: " << t1.id << " 姓名: " << t1.name << " 年龄: " << t1.age << endl;
cout << "辅导学员 姓名: " << t1.stu.name << " 年龄:" << t1.stu.age << " 考试分数: " << t1.stu.score << endl;
system("pause");
return 0;
}
D:\CLion_code\cmake-build-debug\CLion_code.exe
Active code page: 65001
教师 职工编号: 10000 姓名: 老王 年龄: 40
辅导学员 姓名: 张三 年龄:18 考试分数: 100
Press any key to continue . . .
结构体中的成员可以是另一个结构体吗?可以的,在结构体中可以定义另一个结构体作为成员,用来解决实际问题。
问题解答:
是的,结构体中的成员可以是另一个结构体,这种做法可以有效地组织和管理相关数据。在你的代码中,teacher
结构体包含了一个 student
类型的成员 stu
,这正是一个典型的例子。
代码分析
-
学生结构体:
struct student { string name; // 姓名 int age; // 年龄 int score; // 分数 };
-
教师结构体:
struct teacher { int id; // 职工编号 string name; // 教师姓名 int age; // 教师年龄 struct student stu; // 学生结构体作为成员 };
-
实例化与赋值:
- 创建
teacher
结构体变量t1
,并赋值各个成员,包括其内部的student
结构体成员。
- 创建
-
输出:
- 通过结构体
t1
直接访问教师和学生的信息,展示了结构体嵌套的便利性。
- 通过结构体
输出结果
运行代码时,输出结果为:
教师 职工编号: 10000 姓名: 老王 年龄: 40
辅导学员 姓名: 张三 年龄:18 考试分数: 100
总结
这种嵌套结构体的方式不仅使得数据更具层次性,也便于管理和理解。在实际编程中,常常用来处理复杂的数据模型。