【C语言】联合与枚举

目录

一、联合

1、联合的定义与声明

2、联合的访问

3、联合与结构的区别

二、枚举

1、枚举声明及定义

2、枚举初始化


一、联合

1、联合的定义与声明

联合也是一种新的数据类型,是一种特殊形式的变量。联合体也称共用体,其关键字为union。声明与定义与结构相似,如:

Union 联合名
{
       数据类型 成员名;
       数据类型 成员名;
              ……

}联合变量名;

例如:

union a_bc
{
       int I;
       char mm;
};

union a_bc num;

其中联合名可以省略。

例如:

union
{
       int I;
       char mm;
} num;

2、联合的访问

联合的访问与结构相同,都是用点号(.)运算符。

联合变量也可以定义成数组或指针,当定义为指针时,也用 -> 符号访问。

联合既可以出现在结构体内,它的成员也可以是结构体,例如:

struct
{
       int age;
       union
       {
              int I;
              char *ch;
       }x;
}y[10];

访问i可以写成:

y[1].x.i;

若要访问指针ch,则:

*y[2].x.ch;

写为:y[2].x.*ch;是错的。

3、联合与结构的区别

1、两者都是由多个不同数据类型的成员组成,但在任何同一时刻,联合中只存放一个被选中的成员,而结构里的成员都在;

2、对于联合的不同成员赋值,将会对其他成员重写,原来成员的值就不存在了,而对于结构,各成员互不影响。

总的来说联合体的所有成员共享同一个内存地址。

例:

打印联合体所有成员的地址,同时打印各成员的值;发现地址是相同的,但成员的值只有最后一个是正确的。因此联合体的成员不能同时出现,同一时刻只能使用一个。

二、枚举

1、枚举声明及定义

如果一个变量只有几种可能的值,那么就可以将其定义为枚举类型。

枚举的声明格式:(关键字enum

enum 枚举类型名称
{
      枚举值名称,

      枚举值名称,
        ……
};

枚举成员是枚举变量可取的值,注意用逗号(,)隔开,不是分号,最后一个可省略

枚举变量的定义也与结构、联合类似。

可在声明的同时定义,也可单独定义,如:

enum Num x;

定义枚举变量x。枚举变量只能取枚举成员中的某个值。

2、枚举初始化

如果不对枚举初始化,那么从第一个枚举值开始,顺次赋给枚举值0、1、2、3……。但当给枚举中的某个成员赋值时,其后的成员按依次加1的规则确定其值。

如:

enum Num
{
       x1,
       x2=0,
       x3=20,
       x4
}x;

此时x1=0,x2=0,x3=20,x4=21。

初始化时也可以赋负数。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值