联合&枚举

联合类型

联合的使用方式与结构体相似

union _PlayerInfo
{
    char szName[50];
    int nHP;
    float PosX;
    float PosY;
}PlayerInfo, *pPlayerInfo;
联合与结构体的区别
联合(Union)是C语言中的一种特殊的数据类型,它允许在同一内存位置存储不同类型的数据。与结构体(struct)不同的是,联合的所有成员共享同一块内存空间,因此联合中的每个成员的大小加起来不能超过联合的总大小(联合的总大小就是联合中最大成员的大小)。
​
这意味着,如果联合中的任何成员的大小超过了联合的总大小,那么这个成员将无法完全存储在联合中。
  1. 内存布局: 联合中的所有成员共享同一块内存空间,因此它们具有相同的起始地址。联合的大小等于其最大成员的大小。当给联合的一个成员赋值时,其他成员的值会被覆盖。

  2. 共用性: 联合的成员共用同一块内存,因此只能同时存储一个成员的值。在任何时刻,联合只能代表其中一个成员的值。

应用场景:
  • 节省内存:当某些数据只会在联合的某个成员中使用时,可以使用联合来节省内存。

  • 数据类型转换:通过联合可以将同一内存位置的数据以不同的数据类型来解释,实现数据类型的转换。

  • 数据包装:联合可以用于封装不同类型的数据,使其能够共享同一块内存空间。

但是在使用联合时,需要注意确保对成员的访问正确合法,以避免产生未定义行为。联合的成员应具有相同或兼容的数据类型,否则可能会导致类型错误。

枚举类型

枚举类型(Enumeration)是C语言中的一种用户自定义数据类型,用于定义一组具有名称的常量。枚举常常用于提高代码的可读性和可维护性,因为它允许开发人员使用具有描述性的符号来表示特定的值,而不是使用原始的数字或字符串。

基本语法:

enum 枚举名称 {
    枚举值1,
    枚举值2,
    ...
};

在这里,enum 是关键字用于声明枚举类型,枚举名称 是枚举类型的名称,枚举值1枚举值2 等是枚举常量。

枚举值默认情况下是从0开始依次递增的,但也可以在声明枚举类型时显式地指定初始值。例如:

enum Weekday {
    MONDAY,    // 默认值为0
    TUESDAY,   // 默认值为1
    WEDNESDAY = 5,
    THURSDAY,
    FRIDAY,
    SATURDAY,
    SUNDAY
};
​
int main(){
    printf("%d",Monday);  // 打印值为0
}

在这个例子中,MONDAY 的值为0,TUESDAY 的值为1,WEDNESDAY 的值为5,THURSDAY 的值为6,以此类推。

枚举类型的常量可以直接使用,例如:

enum Weekday today = MONDAY;

这样我们就定义了一个名为 today 的变量,并将其赋值为 MONDAY。在后续的代码中,我们可以使用 today 来代表星期一,提高了代码的可读性。

枚举类型在编程中经常用于表示状态、选项、错误码等情况。通过使用枚举类型,可以使代码更加清晰和易于理解。

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值