自定义类型

枚举(enum)

枚举默认为int类型
用法格式:
enum 枚举名
{
枚举元素1, //注意元素后是 " ,"
枚举元素2,
枚举元素3,

}

枚举 就是将把可能的情况都一一列举出来
例:

enum Color
{
	//枚举的可能取值
	//每一个可能的取值是常量
	//枚举常量
	RED,	//0
	GREEN,	//1
	BLUE	//2
	//我们可以在枚举最开始的时候给值
	//例如
	//RED = 5,//后面默认增加 1
	//GREEN,
	//BLUE
	
	//RED = 6,
	//GREEN = 7,
	//BLUE = 10
};
int main()
{
	//当我希望颜色为红色时
	enum Color color = RED;
	//err
	RED = 2; //报错 左操作数必须可修改
	//枚举默认 0-N
	printf("%d\n",RED);		//0
	printf("%d\n",GREEN);	//1
	printf("%d\n",BLUE);	//2
	return 0;
}

联合(Union)[共用体]

用法格式:
union 联合名
{
成员表
};

注:①联合体在一个内存空间中储存不同的数据类型
②union内变量的大小是最大成员的大小
③当最大成员不是最大对齐数的整数倍的时候,
就要对齐到最大对齐数的整数倍
例:

union Un
{
	char c;		//占用 1 字节
	int i;		//占用 4 字节
	double d;	//占用 8 字节
	//由于共用一个内存空间 则共占用8字节
}
int main()
{
	union Un un;
	printf("%d\n",sizeof(un));			//8字节
	printf("%d\n",sizeof(union Un));	//8字节
	
	//以下首地址都相同
	printf("%p\n",&un);			
	printf("%p\n",&(un.c));
	printf("%p\n",&(un.i));
	printf("%p\n",&(un.d));
}

图解:
在这里插入图片描述
由于union共用一个内存空间,所以使用时只能取出其中一个数据类型,修改后,其他数据类型也会被修改

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值