C 结构体与共用体内存使用情况

原文: C 共用体

   simone

结构体与共用体

结构体变量所占内存长度是其中最大字段大小的整数倍(参考:结构体大小的计算)。

共用体变量所占的内存长度等于最长的成员变量的长度。例如,教程中定义的共用体Data各占20个字节(因为char str[20]变量占20个字节),而不是各占4+4+20=28个字节。

union Data
{
   int i;
   float f;
   char  str[20];
} data;  
更多解析

  风中追柳

共用体作用

节省内存,有两个很长的数据结构,不会同时使用,比如一个表示老师,一个表示学生,如果要统计教师和学生的情况用结构体的话就有点浪费了!用共用体的话,只占用最长的那个数据结构所占用的空间,就足够了!

共用体应用场景

通信中的数据包会用到共用体:因为不知道对方会发一个什么包过来,用共用体的话就很简单了,定义几种格式的包,收到包之后就可以直接根据包的格式取出数据。