C语言----共用体、枚举
目录
编辑
共用体
1. 定义
2. 格式
注意:
枚举
1. 定义:
2. 格式:
3. 说明:
面试题:枚举和宏定义区别?
共用体
1. 定义
不同数据类型的数据可以使用共同的存储区域,这种数据构造类型称为共用体,简称共用,又称联合体。
2. 格式
union共用体名
{
成员列表;
};
注意:
1. 共用体成员在内存中使用共同的存储空间。由于共用体中各成员的数据长度往往不同,所以共用体变量在存储时总是按其成员中数据长度最大的成员占用内存空间。
2. 在共用体类型变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用
思考:如何验证大小端?
方式一:
int num = 0x12345678;
char ch = (char)num;
printf("%#x\n", ch); //如果输出的是0x78则是小端
方式二:
int num = 0x12345678;
char *p = (char *)#
printf("%#x\n", *p)); //如果输出的是0x78则是小端
练习:通过共用体验证大小端。
union endion
{
int num;
char ch;
};
int main(int argc, char const *argv[])
{
union endion en;
en.num = 0x12345678;
printf("%#x\n", en.ch); //如果输出的是0x78则是小端
return 0;
}
枚举
1. 定义:
枚举是C语言中的一种构造数据类型,它可以用于声明一组常数。当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型。比如,你可以用一个枚举类型的变量来表示季节,因为季节只有4种可能的取值:春天、夏天、秋天、冬天。
一个星期只有七天,一年只有十二个月,一个班每周有六门课程等
2. 格式:
enum 枚举类型名
{
valueName1,
valueName2,
valueName3,
......
};
3. 说明:
1)枚举值默认从 0 开始,往后逐个加 1(递增)
enum week{ Mon, Tues, Wed, Thurs, Fri, Sat, Sun };
2)也可以给每个名字都指定一个值:
enum week{ Mon = 1, Tues = 2, Wed = 3, Thurs = 4, Fri = 5, Sat = 6, Sun = 7 };
3)简单的方法是只给第一个名字指定值:
enum week{ Mon = 1, Tues, Wed, Thurs, Fri, Sat, Sun };
4)枚举是一种类型,通过它可以定义枚举变量
enum week a, b, c;
5)有了枚举变量,就可以把列表中的值赋给它
enum week a = Mon, b = Wed, c = Sat
6)枚举列表中的 Mon、Tues、Wed 这些标识符的作用范围是全局的,不能再定义与它们名字相同的变量。
7)Mon、Tues、Wed 等都是常量,不能对它们赋值,只能将它们的值赋给其他的变量。
笔试题: