以下是谭浩强老师的讲解。很容易懂。真的是大师。
1、有时需要将几个不同时出现的变量共享一个内存单元,如:将一个整型变量、实型变量、字符型变量共同放入同一个地址空间(当然这几个变量不能同时用),怎么办?
C提供了构造类型——共用体(联合体)类型支持。
2、共用体变量特点:几个成员共用一段内存。
引申1:共用体变量的内存长度是多少?
最长成员所占字节数。
引申2:共用体变量几个成员能同时存在吗?
不能。一个时刻只有一个成员存在。否则会被覆盖。
引申3:共用体变量成员不能同时存在,那当前起作用的是谁?
起作用的成员是最后一次存放的成员
这个例子用来理解共用体比较合适。金额中有小数点。
union UNKNOWN
{
DDWORD lc;
BYTE c;
}VAR1;
result = 0;
for (i=0;i<len;i++)
{
result = (result<<3) + (result<<1);
VAR1.lc = 0;
VAR1.c = num[i] - 0x30;
result += VAR1.lc;
}
return result;