[C 语言] 嵌套结构体

结构体理解:

起始结构体就是一个类型,而用这个类型下有不同的成员。 每个成员在共同的类型下有相同的属性。
比如有一个班级的类,班级的类下有学生这种类型,而不同的学生有名字,年龄,班级信息这种属性。学生的班级属性中含有很多班级信息,这时候就要用到结构体嵌套。

复制代码
#include <stdio.h>
#include <string.h> // 用于字符串操作
#include <stdlib.h> // 解决malloc和free的声明问题

// 定义班级结构体
typedef struct {
    char className[50];
    char headTeacher[50];
} Class;

// 定义学生结构体,其中嵌套了班级结构体
typedef struct {
    char name[50];
    int age;
    Class classInfo; // 结构体嵌套,直接包含一个Class类型的成员
} Student;

int main() {
    // 创建班级实例
    Class class1 = {"三年级一班", "张老师"};

    // 创建学生实例,并初始化嵌套的班级信息
    Student student1 = {"小明", 10, class1};

    // 或者动态创建学生实例
    Student* student2 = (Student*)malloc(sizeof(Student));
    strcpy(student2->name, "小红");
    student2->age = 11;
    strcpy(student2->classInfo.className, "三年级二班");
    strcpy(student2->classInfo.headTeacher, "李老师");


    printf("学生姓名: %s, 年龄: %d, 所在班级: %s, 班主任: %s\n",
    student1.name, student1.age, student1.classInfo.className,
    student1.classInfo.headTeacher);

    if(student2 != NULL) {
        printf("学生姓名: %s, 年龄: %d, 所在班级: %s, 班主任: %s\n",
           student2->name, student2->age, student2->classInfo.className, 
            student2->classInfo.headTeacher);
     free(student2); // 动态分配的内存记得释放
    }
}

输出:

学生姓名: 小明, 年龄: 10, 所在班级: 三年级一班, 班主任: 张老师

学生姓名: 小红, 年龄: 11, 所在班级: 三年级二班, 班主任: 李老师

相关推荐
小坏讲微服务9 分钟前
Spring Cloud Alibaba 整合 Scala 教程完整使用
java·开发语言·分布式·spring cloud·sentinel·scala·后端开发
Kiri霧10 分钟前
Scala 循环控制:掌握 while 和 for 循环
大数据·开发语言·scala
闲人编程20 分钟前
Python的抽象基类(ABC):定义接口契约的艺术
开发语言·python·接口·抽象类·基类·abc·codecapsule
qq_1728055921 分钟前
Go 语言结构型设计模式深度解析
开发语言·设计模式·golang
lkbhua莱克瓦2444 分钟前
集合进阶8——Stream流
java·开发语言·笔记·github·stream流·学习方法·集合
20岁30年经验的码农1 小时前
Java Elasticsearch 实战指南
java·开发语言·elasticsearch
雾岛听蓝1 小时前
C++ 类和对象(一):从概念到实践,吃透类的核心基础
开发语言·c++·经验分享·笔记
CoderYanger1 小时前
优选算法-优先级队列(堆):75.数据流中的第K大元素
java·开发语言·算法·leetcode·职场和发展·1024程序员节
TracyCoder1231 小时前
MySQL 实战宝典(八):Java后端MySQL分库分表工具解析与选型秘籍
java·开发语言·mysql
非凡的世界1 小时前
为什么我和越来越多的PHP程序员,选择了 Webman ?
开发语言·php·workman·webman