c语言:枚举和共用体

本文介绍了C/C++中的枚举(enum)和联合(union)的概念及其使用。枚举提供了一种定义常量集合的方式,增强了代码的可读性和类型安全性。联合则允许不同类型的成员共享同一内存空间,展示了其独特的存储特性。通过示例代码,阐述了如何定义枚举和联合,以及它们在判断字节序等实际场景中的应用。
摘要由CSDN通过智能技术生成

枚举

顾名思义,枚举为一一列举。

枚举是一种类型,可以通过类型创建变量

枚举的定义:

语法:

默认值:

enum 枚举名{

枚举可能取值1,

枚举可能取值2,

……

enum color{
    RED,//0
    GREEN,//1
    BLUE//2
};

int main(){
    printf("%d %d %d\n"),RED,GREEN,BLUE);//0 1 2
    return 0;
}

枚举成员的值默认从0开始

也可以自定义枚举可能取值的值:

enum 枚举名{

枚举可能取值1=初始值(常量),

枚举可能取值2=初始值(常量),

……

可以定义一部分初始值,一部分默认值,默认值从零开始,如果前一个可能取值定义了初始值,则是初始值+1。

enum color{
    RED,//0
    GREEN=9,//9
    BLUE//10
};

int main(){
    printf("%d %d %d\n"),RED,GREEN,BLUE);//0 9 10
    return 0;
}

枚举的使用:

enum color c=GREEN;

枚举的大小: 

整形大小

printf("%d",sizeof(c));//4

枚举的优点:

1.可读性++

2.枚举有类型检查,更加严谨。

3.防止命名污染(命名冲突)。

4.便于调试。

5.使用方便,可一次定义多个常量

 

 

联合(共用体)

一种特殊的自定义类型。

特征:成员变量共用同一块空间。一个联合变量的空间至少是最大成员的大小。

在同一时刻只能使用联合体中的一个成员,因为一个成员被修改另外的成员也会被修改。

语法:

union 联合体名{

类型 成员变量名 1;

类型 成员变量名 2;

union un{
    int i;
    char c;
}
//声明一个枚举变量
union un a;

联合体的大小:

联合体的大小至少是最大成员的大小;

联合体大小不是最大对齐数整数倍的时候,就要对齐到最大对齐数的整数倍。

联合体的应用举例:

判断当前机器是大端存储还是小端存储。

大端字节序存储模式:低位数据存在高位地址

小端字节序存储模式:低位数据存在低位地址

不使用联合体的求解方式:

int main(){
    int a=1;
    if(1==*(char*)&a){
        printf("小端\n");
    }else{
        printf("大端\n");
    }
    return 0;
}

使用联合体:

union u{
    char c;
    int i;
}
int main(){
    union u un;
    u.i=1;
    if(1==u.c){
        printf("小端\n");
    }else{
        printf("大端\n");
    }
    return 0;
}
          

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值