读书人

C语言中的‘共用体’在哪些方面会用到

发布时间: 2012-04-14 17:14:21 作者: rapoo

C语言中的‘共用体’在哪些方面会用到?
C语言中的‘共用体’在哪些方面会用到?

[解决办法]
你想在不同时间把不同的东西存储在同一个地方的时候,可以节省内存
[解决办法]

C/C++ code
union ip {    unsigned char a[4];    unsigned long b;};union ipv6 {    unsigned char a[16];    unsigned short b[8];    unsigned long c[4];};
[解决办法]
共用体数据成员存储时用覆盖技术,共享存储空间。在结构体中增加共用体类型成员,可使结构体中产生动态成员.
[解决办法]
去看看tomcrypt的对称算法密钥结构体,为了能让一个统一的结构应用于几十种算法而不增加开销,使用了共用体
[解决办法]
即当存储的数据有相同的内存布局的时候,可以用union,然后以一种类型读入,以另一种类型读出。
比如上述的ip,可以把192,168,1,1分别赋值给union中的a,然后读b,即可得到ip的数值形式。

[解决办法]
一个很重要的union应用,可以判断你的机器是big-endian还是littl-endian
C/C++ code
Union Check{   int a;   char b;};int main(){   Check check;   check.a=0;   check.b=1;      if(check.a==1)   {      printf("你的机器是little-endian");   }   else   {      printf("你的机器是big-endian");   }      return 0;} 

读书人网 >C语言

热点推荐