共用体(联合体)

  1. 构造数据类型,定义和使用格式和结构体类似。<br /> <br /> 定义格式:<br /> union 公用体名<br /> {<br /> 数据类型 成员变量名1;<br /> 数据类型 成员变量名2;<br /> ......<br /> 数据类型 成员变量名n;<br /> };<br /> <br /> **特点:**<br /> **1.**所有成员公用一个内存空间,不安全。<br /> **2.**同一时间只能使用一个成员的值。<br /> **3.**访问共用体成员也用.访问。<br /> <br /> **用共用体测试大小端:**<br /> 低地址存放低字节,**小**端。<br /> 低地址存放高字节,**大**端。<br /> union un <br /> {<br /> char a;<br /> short b;<br /> int c;<br /> };<br />

枚举

用表示一些固定的值。
举例:一周七天 1 2 3 4 5 6 7

#define Mon 1
#define Tus 2
#define Thr 3

1.枚举定义格式: 构造数据类型
enum 枚举名
{
成员名1,
成员名2,
……
成员名n,
};

注意:
1. 枚举中的成员只能表示一个整数,
默认第一个成员代表整数0,
后边的成员依次累加1。
2. 枚举中的成员使用逗号隔开
3. 可以给枚举中的某个成员指定一个初始值,
某个成员后边的成员,在初始值的基础上加一。
4. 当枚举类型定义成功后,枚举成员的值就已经确定,
接下使用时不能更改。

举例:一周七天 1 2 3 4 5 6 7
enum week
{
Mon,
Tus,
Wed,
Thr,
Fri,
Sat,
Sun,
};

1.枚举类型变量的定义:
enum week st=Sun; //赋值为枚举成员已经定义的值。
// enum week st=20;//可以这样赋值,但是不建议这样这样使用。
/ Tues=8;(报错)———> //1-enum.c:21:9: error: lvalue required as left operand of assignment/
//枚举类型一旦定义成功,成员的值已经确定,不能更改。
//定义枚举类型时可以进行更改。
定义成功枚举类型后,成员可以直接当宏名使用,使用的是一个常量值。
printf(“%d\n”,Tue);//2

用枚举类型定义变量都占四个字节空间。(所有的枚举类型)

2.直接使用定义的枚举成员
printf(“%d\n”,Wed);//枚举成员是可以直接引用

3.枚举定义成功后,不能修改枚举成员的值。只能在定义枚举类型时进行修改。
eg:// Wed=4;
报错 :
enum.c:18:5: error: lvalue required as left operand of assignment

枚举的使用:
常搭配switch使用,可以使代码美观简洁易懂。
eg: led1 led2 led3
enum Led{
led1=1,
led2,
led3,
};
void led_on(enum Led num)
{
switch(num) {
case 1:
break;
case 2:
break;
case 3:
break;
default :
break;
}