【C】结构体_2

共用体和枚举

共用体(联合体)

使几个不同的变量占用同一段内存空间的结构称为联合。
共用体与结构体的定义类似:

union MyUnion     //union 联合类型名	 
{
	int num;         //成员列表
	char name[10];
};

联合与结构体相似之处:

  • 都是由不同类型(相同也行)的数据组成
  • 都只能逐个引用成员进行操作

共用体特点:

  1. 系统采用覆盖技术,实现共用变量各成员的内存共享,所以在某一时刻,存放的和起作用的是最后一次存入的成员值。
  2. 由于所有成员共享同一内存空间,故共用变量与其各成员的地址相同。
  3. 在共用体变量定义的同时只能用第一个成员的类型值进行初始化
  4. 共用类型可以出现在结构类型定义中,反之亦然。
  5. 共用体所占内存大小,为占内存最大的那个成员变量的大小。

例:

union MyUnion      
{
	int num;        
	char name[10];
};
union MyUnion maye = {126};   //right
union MyUnion maye = {126"abd"};  //wrong  只能赋值一个变量成员

共用体实例:

int main(void)
{
	typedef struct myfriend 
	{
		int a;
		union info
		{
			char cc[3];
			int ccc;
		}cmd;		
	}ABD;	
	ABD maye = {4, 4};
	ABD mayre_1 = {4, "cc"};	
	printf("%d %s\n", mayre_1.a, mayre_1.cmd.cc);
	printf("%d %d", maye.a, maye.cmd.ccc);
	return 0;	
}

枚举

具有有限个整型符号常量的集合,这些整型符号常量称为枚举常量。

定义方式:

enum Week   //enum 枚举类型名
{
	星期一,  //!!每个枚举变量中间用逗号隔开
	星期二,
	星期三,
	星期四,
	星期五,
	星期六,
	星期日,
}

枚举类型有什么用?

  • 在实际应用中,有些变量的取值范围是有限的,仅可能只有几个值,如一个星期7天, 一年12个月,一副扑克有4种花色,每一花色有13张牌等。
  • 整型数来表示:直观性差,如1,在别让看来可能就是数字1,或者星期一,或者一月份,难以区分!
  • 由此看出,为提高程序的可读性,引入非数值量即一些有意义的符号是非常必要的。

枚举使用说明:

  • 每一个枚举常量的值取决于,在定义时排列的顺序,第一个枚举常量的序号为0,然后依次加1。如果想要更改第一个成员常量的值,那么只需要针对第一个成员常量进行赋值就可以。
  • 若想改变枚举常量的值,只能在枚举变量定义时由程序员指定。
enum Week   
{
	星期一,  
	星期二,
	星期三,
	星期四,
	星期五,
	星期六,
	星期日,
};
enum Week week[7] = {星期一,  星期二,星期三,星期四,星期五,星期六,星期日};
for (int i = 0; i < 7; i++)
{
	printf("%d", week[i]);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值