文章地址:http://c.biancheng.net/view/2035.html
union 共用体
共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员
共用体占用的内存等于最长的成员占用的内存
在同一个存储空间中存储不同的数据类型
------------------------------------------------------------------------------------------------------
应用1:
1 struct 2 { 3 char name[20]; 4 int num; 5 char sex; 6 char profession; 7 union 8 { 9 float score; 10 char course[20]; 11 }sc; 12 }body;
如果一些数据不可能在同一时间同时被用到,则可以使用union
-------------------------------------------------------
应用2:
1 union 2 { 3 int i; 4 char a[2]; 5 }u;
这里需要注意存储模式:大端模式和小端模式
-------------------------------------------------------
应用3:
1 // 私家车 2 struct owner_car 3 { 4 int car_num; 5 char car_name; 6 }; 7 // 租车 8 struct rent_car 9 { 10 double car_price; 11 int car_type; 12 }; 13 // car联合体 14 union car_info 15 { 16 struct owner_car ownerCar; 17 struct rent_car rentCar; 18 }; 19 struct car_data 20 { 21 int carID; 22 int status; 23 union car_info carInfo; 24 };
如果FirstCar.status=0,程序将使用FirstCar.CarInfo.OwnerCar.car_num;
如果FirstCar.status=1,程序将使用FirstCar.CarInfo.RentCar.car_price(注:这段是一种设想情况)
通过这种方法可以对数据进行选择性组织,从而可以构建出一种很有用的数据类型!!!
原文:https://www.cnblogs.com/chino-ll/p/14763325.html