共用体和枚举类型

共用体类型定义:

使用同一块内存(同一个内存起始地址),存放多个不同类型的变量。使用覆盖技术来实现共用体,但是需要注意的是,同一瞬时一个内存地址只能存放一种变量,共用体变量中只能存放一个值,否则就会被覆盖。共用体变量中起作用的是最后一次(最近一次)被赋值的概念。

定义

union 共用体名{
	成员列表
}变量列表

定义方式类似于结构体。
举例:

union Data{
	int i;
	char ch;
	float f;
}a,b,c;

等价于:

union Data{
	int i;
	char ch;
	float f;
};
union Data a,b,c;

引用

a.i;
a.ch;
a.f;

可以在一段程序中全部使用,但是实际上同一瞬时只有一个成员值。

共用体和结构体的区别

结构体变量所占内存长度是全部成员变量的内存长度之和。每个成员有自己分别的内存空间。共用体变量所占内存长度等于最长成员的长度。同一时间只允许被赋给一个成员值。

枚举类型定义

enum [枚举名] {枚举元素列表};
enum 枚举名 枚举变量

例如:

	enum Weekday {sun,mon,tue,wed,thu,fri,sat};
			   	   0   1   2   3   4   5   6
	enum Weekday workday,weekend;
	workday=mon;		等价于     workday=1;	
	weekday=sat;		等价于     weekday=6;

枚举元素在定义后被当作常量处理,因此不能重新赋值。
每一个枚举元素都代表一个整数,枚举变量可以用来作判断和比较。

使用枚举变量

枚举变量完全可以用0123来代替,但是枚举变量的意义在于方便理解。
可以用简单的枚举元素列表,来表示某个值的全部情况。
既可以用作循环中的赋值和边界条件判断,也可以用在switch中,此时case变成了枚举成员(不加” ”).

for(workday=mon;workday<sat;workday++){
	//……
}
switch(workday){
	case mon:……
	case tue:……
	//……
}

需要注意的是,枚举变量实际上还是整数,因此输出时不可以%s,只能用%d。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值