龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

学点 C 语言(28): 数据类型 - 联合(union)

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
在结构中, 每个字段的数据类型是唯一的; 使用联合可以在一个字段中储存不同的数据类型. 不同的数据类型共享一块内存. 当然其内存大小应依着大的来. 联合中的数据, 非此即彼, 只有

  在结构中, 每个字段的数据类型是唯一的; 使用联合可以在一个字段中储存不同的数据类型.

  不同的数据类型共享一块内存. 当然其内存大小应依着大的来.

  联合中的数据, 非此即彼, 只有一个有效; 应该有说明在某个数据中此时有用的是什么类型.

  除了共享内存以外, 联合与结构一样.

  1. union 的大小是其中最大数据成员的大小:

#include 

int main(void)

{

  union MyUnion {

    short n1;

    int  n2;

    double n3;

  };

  

  printf("%u, %un", sizeof(union MyUnion), sizeof(double));

  getchar();

  return 0;

}

  2. union 的特点是共享内存, 修改一个其他都会变:

#include 

#include 

int main(void)

{

  union MyUnion {

    unsigned char   n1;

    unsigned short  n2;

    unsigned int   n3; 

  } U = {0};

  printf("%10u, %10u, %10un", U.n1, U.n2, U.n3);

  U.n2 = USHRT_MAX;

  printf("%10u, %10u, %10un", U.n1, U.n2, U.n3);

  U.n3 = INT_MAX;

  printf("%10u, %10u, %10un", U.n1, U.n2, U.n3);

  U.n1 = 0;

  printf("%10u, %10u, %10un", U.n1, U.n2, U.n3);

  getchar();

  return 0;

}

精彩图集

赞助商链接