结构体嵌套

#include <iostream>
#include <string>
using namespace std;

/*
 结构体嵌套
 结构体的成员类型也可以是一个结构体
 有两种形式:
 形式一:两个独立的结构里,其中一个结构体成员类型是一个结构体
 形式二:在结构体里定义一个结构体
 */

// 形式一:两个独立的结构里,其中一个结构体成员类型是一个结构体
struct Student{
    string name;
};

struct Teacher{
    int num;
    Student stu; //stu类型是一个Student结构体类型
};

// 形式二:在结构体里嵌套一个结构体,里面的结构体只能在本结构体里使用,不能在外部使用
struct Teacher2{
    // 在里面先定义结构体
    struct Student2{
        string name;
    };
    int num;
    Student2 stu; //使用里面定义的结构体类型
};

int main() {
    // 形式一:
    // 方式一:声明变量t1时初始化
    Teacher t1 = {1,{"张三"}};
    
    // 方式二:声明变量t2后逐个赋值
    Teacher t2;
    t2.num = 2;
    t2.stu.name = "张三"; //获取 嵌套的成员也是用 .
    
    // 形式二定义变量
    Teacher2 t3 = {1,{"张三"}};
    cout<<t3.num<<endl;
    cout<<t3.stu.name<<endl;
    
    Teacher2 t4;
    t4.num = 1;
    t4.stu.name = "张三";
    
    
    return 0;
}