Welcome

首页 / 软件开发 / C语言 / 学点C语言(28):数据类型 - 联合(union)

学点C语言(28):数据类型 - 联合(union)2010-04-30 博客园 万一在结构中, 每个字段的数据类型是唯一的; 使用联合可以在一个字段中储存不同的数据类型.

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

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

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

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

#include <stdio.h>

int main(void)
{
union MyUnion {
short n1;
int n2;
double n3;
};

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

getchar();
return 0;
}

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

#include <stdio.h>
#include <limits.h>

int main(void)
{
union MyUnion {
unsigned char n1;
unsigned short n2;
unsigned int n3;
} U = {0};

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

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

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

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

getchar();
return 0;
}