C语言速成16之结构体嵌套与内存管理:C 语言数据建模的进阶之路

一、结构体嵌套:构建多层数据模型的核心

作为12年开发经验的老程序员,我在设计学生信息系统时,经常需要处理多层数据关系。例如:

场景需求:学生信息包含姓名(姓+名)、年龄、性别,而姓名需要拆分为「姓氏」和「名字」独立存储。

传统方案缺陷:用单一结构体存储会导致成员冗余,修改时牵一发而动全身。

1. 如何用嵌套结构体实现数据分层?

// 定义姓名结构体(底层模块)
struct Name {
    char lastName[20];  // 姓氏
    char firstName[20]; // 名字
};

// 定义学生结构体(上层模块)
struct Student {
    int age;           // 年龄
    char gender;       // 性别
    struct Name name;  // 嵌套姓名结构体
} stu1; // 声明全局变量

2. 嵌套结构体的初始化技巧

方式1:逐层赋值(清晰直观)
strcpy(stu1.name.lastName, "韩");   // 赋值姓氏
strcpy(stu1.name.firstName, "美美"); // 赋值名字
stu1.age = 18;
stu1.gender = 'F';
方式2:结构体变量整体赋值(高效简洁)
struct Name tmpName = {"韩", "美美"}; // 临时姓名变量
stu1.name = tmpName; // 直接整体赋值
stu1.age = 18;

3. 多层嵌套实战:员工信息管理

// 定义日期结构体
struct Date {
    int year;
    int month;
    int day;
};

// 定义员工结构体(嵌套两层)
struct Employee {
 &nb
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值