c语言枚举和联合体详解-创新互联
枚举
声明
分享名称:c语言枚举和联合体详解-创新互联
标题URL:http://scyanting.com/article/degehe.html
enum Day//星期
{
Mon,//0
Tues,//1
Wed,//2
Thur,//3
Fri,//4
Sat,//5
Sun//6
};
注意每个成员变量用逗号隔开
创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站建设、网站建设、吉州网络推广、成都微信小程序、吉州网络营销、吉州企业策划、吉州品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们大的嘉奖;创新互联为所有大学生创业者提供吉州建站搭建服务,24小时服务热线:13518219792,官方网址:www.cdcxhl.com
枚举相当于对每个成员都进行了#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;
}
优点增加代码的可读性和可维护性
和#define定义的标识符比较枚举有类型检查,更加严谨。
防止了命名污染(封装)
便于调试
使用方便,一次可以定义多个常量
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;
}
大小计算联合的大小至少是大成员的大小,数组成员的大小是整个数组的大小,但对齐数是该数组的类型。
当大成员大小不是大对齐数的整数倍的时候,就要对齐到大对齐数的整数倍。
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语言枚举和联合体详解-创新互联
标题URL:http://scyanting.com/article/degehe.html