一.枚举
1.枚举是一个类型 一个常量数组
2.关键字:enum
1 enum Week{MON,TUE,WED,THU,FRI,SAT,SUN};
3.声明一个enum Week w 那么sizeof(w)的大小是4
w可以等于以上七个里面中的任意一个 只能在范围之内赋值
默认情况下 不赋值第一个从0开始 MON=0 TUE=1 以此类推
但例如对THU进行赋值 让THU=100 那么FRI就是101
之所以大小是4 因为它就是一个int类型的变量
4.作用:方便代码的阅读
枚举可以用宏来代替 也可以说 枚举也是声明常量的一种方式
1 #include<stdio.h> 2 3 enum Week {MON,TUE,WED,THU,FRI,SAT,SUN}; 4 enum CaiQuan {JIANDAO,SHITOU = 100,BU}; 5 6 int main() 7 { 8 enum CaiQuan cq = BU; 9 10 switch(cq) 11 { 12 case JIANDAO: 13 printf("%d\n",JIANDAO); 14 break; 15 case SHITOU: 16 printf("%d\n",SHITOU); 17 break; 18 case BU: 19 printf("%d\n",BU); 20 break; 21 } 22 23 return 0; 24 }
二.联合体
联合体的所有成员共享一块内存 联合体的大小看最大的成员有多大
1 #include<stdio.h> 2 3 typedef union MyUnion 4 { 5 int a; 6 short b; 7 char c; 8 int d; 9 }MU; 10 11 int main() 12 { 13 MU mu; 14 int n; 15 16 n = sizeof(mu); 17 18 /*mu.a = 10; 19 printf("%d\n",mu.b); 20 21 mu.c = 100; 22 printf("%d\n",mu.a);*/ 23 24 mu.c = 1; 25 printf("%d\n",mu.a); 26 27 return 0; 28 }
说明:这段代码输出的时候 是乱码的
因为c是char 只有一个字节 但是a是int类型的 有四个字节
但如果把下面两行注掉 上面注掉的四行放开的话 就可以正常输出 因为a已经被赋过值了