C语言联合体union、枚举enum
联合体(也叫:共用体)
??关键字:union --------------------->(联合体使用的较少)
??共用体中可以包含多个不同的数据类型
??这些数据类型共享同一块内存空间
??共用体的内存分配内容空间的大小,由共用体中最大的数据类型为基准,分配内存空间。
??格式:
????union 联合体名字{
??????数据类型?变量名1;
??????数据类型?变量名2;
??????数据类型?变量名3;
??????..........
??????数据类型?变量名n;
????};
??联合体的优点:
?????节约内存空间
??缺点:
????1、同一时刻只能使用联合体中的一个成员
????2、多个变量使用同一块内存空间,不安全,开发中不建议使用联合体。
??联合体中成员的访问:
????union?dataPyte?dt;
????dt.i ?= ?初始值;
?????. ?:直接访问(普通的)
????union dataPyte *dt;
????dt->s ?=? 初始值;
?????->?:间接访问(指针类型的)
????声明联合体数据类型时,编译器不分配内存空间。定义联合体类型变量时,编译器才会分配内存空间。
枚举类型 (enum)
??枚举类型的变量一般占用 4字节 的空间,跟成员个数无关;
??常使用枚举类型表示一些常量:
????enum 枚举名字{
???????枚举成员1, //0
???????枚举成员2, //1
???????枚举成员3, //2
???????枚举成员4, //3
???????.......
???????枚举成员n, // n-1
?????}; //分号不可省略
??注意:
????1、枚举中的成员只能表示一个整数,默认第一个成员代表整数0,后面的成员依次加1。
????2、枚举中的成员使用逗号隔开。
????3、可以给枚举中的某个成员指定一个初始值,某个成员后面的成员,再初始值的后面依次加1.
??枚举类型变量的初始化:
????(1)定义的同时进行初始化:
???????enum ? 枚举名字 ? 枚举类型的变量名? = ?枚举中的成员进行初始化;
????(2)先定义在初始化:
???????enum ? 枚举名字 ? 枚举类型的变量名 ;
???????枚举类型的变量名? = ? 枚举中的成员; ? ---------------->这里只能使用枚举里面的成员
???? 枚举类型的变量可以直接使用,不用再定义一个变量,然后使用 . 或者->去访问它中的属性。