嵌入式杂谈-- C语言中结构体和枚举的区别

在 C 语言编程的世界里,结构体(struct)和枚举(enum)是两个极为重要的工具,它们虽都用于组织数据,却有着截然不同的特性与用途。

一、结构体:数据的打包利器

结构体像是一个万能的收纳盒,能把不同类型的数据整合到一起。定义结构体时,就如同定制这个收纳盒的内部格局,指明它包含哪些成员变量,以及每个变量的类型。例如:
struct Student {
    char name[20];
    int age;
    float score;
};
这里创建了一个名为“Student”的结构体,用来存放学生的姓名、年龄和成绩信息。使用结构体时,可声明结构体变量:
struct Student stu1;
stu1.age = 18;
strcpy(stu1.name, "Tom");
stu1.score = 90.5;
结构体的优势在于对复杂数据的封装,现实场景中,如记录员工档案、游戏角色属性等,只要涉及多类型数据组合,结构体就大显身手,让代码条理清晰,数据管理便捷。

二、枚举:限定取值的魔法清单

枚举则像是一份预先定制的魔法清单,它列出所有可能的取值,变量只能从中选择。定义如下:
enum Weekday {
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
};
声明枚举变量:
enum Weekday today;
today = MONDAY;
枚举默认从 0 开始给每个成员赋值,依次递增,当然也能手动指定值。它的妙处在于限定变量取值范围,增强代码可读性与健壮性。像表示一周七天、信号灯颜色等固定取值场景,枚举有效防止不合理输入,让程序逻辑严谨。

三、二者关键区别

1. 数据类型本质:结构体是多种数据类型的组合体,成员变量可独立操作;枚举是一种特殊整数类型,取值限于定义的枚举常量。

2. 内存占用:结构体大小为各成员变量所占空间之和(考虑内存对齐);枚举通常占用与基础整数类型相同的空间,如 4 个字节(依编译器而定)。

3. 用途侧重:结构体用于封装复杂关联数据;枚举专注于限定变量取值,使程序表意明确。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值