概述
C语言的联合(union)类型:
union 联合名{
数据类型 成员名;
数据类型 成员名;
...
} 联合变量名;
联合表示几个变量公用一个内存位置, 在不同的时间保存不同的数据类型和不同长度的变量。
测试程序代码:
Copyright (C), 1998-2006, Rx. Co., Ltd.
FileName: mainApp.cpp
Author: longronglin
Version : 1.0
Date: 2006-10-06
Description:
Function List:
1. int main()
History:
<author> <time> <version > <desc>
longronglin 2006/10/08 1.0 modify xxx .
***********************************************************/
#include < stdio.h >
/**/ /*
* 返回1为正确执行
* 主函数
*
*/
int main()
... {
union
...{
int i;
char x[2];
} num;
num.x[0] = 10;
num.x[1] = 1;
printf("%x ",num.i);
return (1);
}
运行结果图:
有些人说是010a。这是和数据类型的内存分配有关。我上面的测试是在VC下的测试。
同样的也有一段网上流传的程序,大家看看结果。并分析一下。
int main()
{
union{ /*定义一个联合*/
int i;
struct{ /*在联合中定义一个结构*/
char first;
char second;
}half;
}number;
number.i=0x4241; /*联合成员赋值*/
printf("%c%c/n", number.half.first, number.half.second);
number.half.first='a'; /*联合中结构成员赋值*/
number.half.second='b';
printf("%x/n", number.i);
return (1);
}
答案: AB (0x41对应'A',是低位;Ox42对应'B',是高位) 6261 (number.i和number.half共用一块地址空间)。为什么这里的前面没有cccc呢?大家看看。因为赋过值。
最后
以上就是瘦瘦香氛为你收集整理的C语言的联合(union)类型(27)的全部内容,希望文章能够帮你解决C语言的联合(union)类型(27)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复