资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

c语言枚举和联合体详解-创新互联

枚举 声明
enum Day//星期
{
 Mon,//0
 Tues,//1
 Wed,//2
 Thur,//3
 Fri,//4
 Sat,//5
 Sun//6
};
  1. 注意每个成员变量用逗号隔开

    创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站建设、网站建设、吉州网络推广、成都微信小程序、吉州网络营销、吉州企业策划、吉州品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;创新互联为所有大学生创业者提供吉州建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
  1. 枚举相当于对每个成员都进行了#define,第一个从零开始逐个递增

初始化

可以给成员变量初始化

enum Color//颜色
{
 WHITE,//0
 RED,//1
 GREEN=3,//3
 BLUE=5,//5
 BLACK=5 //5允许有相同的值
};

enum Color clr = GREEN;//正确
int i = BLUE;//正确,i的值被赋为5
clr = 5;//错误
大小的计算

枚举类型的大小始终为一个整型的大小即是4

enum Color
{
	blue,
	yellow,
	red
};

int main()
{
	printf("%d\n", sizeof(enum Color));//4
	return 0;
}
优点
  1. 增加代码的可读性和可维护性

  1. 和#define定义的标识符比较枚举有类型检查,更加严谨。

  1. 防止了命名污染(封装)

  1. 便于调试

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

联合体(共用体) 声明
union Un
{
 char c;
 int i;
};
特点

联合的成员是共用同一块内存空间的,这样一个联合变量的大小,至少是大成员的大小(因为联

合至少得有能力保存大的那个成员)。

union Un
{
 int i;
 char c;
}un;

int main()
{
  // 下面输出的结果是一样的
	printf("%d\n", &(un.i));
	printf("%d\n", &(un.c));

	//下面输出的结果是什么?
	un.i = 0x11223344;
	un.c = 0x55;
	printf("%x\n", un.i);//11223355
	return 0;
}
大小计算
  1. 联合的大小至少是大成员的大小,数组成员的大小是整个数组的大小,但对齐数是该数组的类型。

  1. 当大成员大小不是大对齐数的整数倍的时候,就要对齐到大对齐数的整数倍。

union Un1
{
	char c[5];
	int i;
};
union Un2
{
	short c[7];
	int i;
};
int main()
{
	//下面输出的结果是什么?
	printf("%d\n", sizeof(union Un1));//8
	printf("%d\n", sizeof(union Un2));//16
	return 0;
}

你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧


网站名称:c语言枚举和联合体详解-创新互联
浏览路径:http://cdkjz.cn/article/degehe.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220