结构和联合的区别
2011-05-26 22:06
148 查看
结构和联合有下列区别:
1.结构和联合都是由多个不同的数据类型成员组成,但在任何同一时刻,联合中只存放了一个被选中的成员,而
结构的所有成员都存在。
2.对于联合的不同成员赋值,将会对其它成员重写,原来成员的值就不存在了,而对于结构的不同成员赋值是互
不影响的。
下面举一个例了来加对深联合的理解。
例4:
main()
{
union{/*定义一个联合*/
inti;
struct{/*在联合中定义一个结构*/
charfirst;
charsecond;
}half;
}number;
number.i=0x4241;/*联合成员赋值*/
printf("%c%c\n",number.half.first, mumber.half.second);
number.half.first='a';/*联合中结构成员赋值*/
number.half.second='b';
printf("%x\n",number.i);
getch();
}
输出结果为:
AB
6261
从上例结果可以看出:当给i赋值后,其低八位也就是first和second的值;当给first和second赋字符后,这两个
字符的ASCII码也将作为i的低八位和高八位。
1.结构和联合都是由多个不同的数据类型成员组成,但在任何同一时刻,联合中只存放了一个被选中的成员,而
结构的所有成员都存在。
2.对于联合的不同成员赋值,将会对其它成员重写,原来成员的值就不存在了,而对于结构的不同成员赋值是互
不影响的。
下面举一个例了来加对深联合的理解。
例4:
main()
{
union{/*定义一个联合*/
inti;
struct{/*在联合中定义一个结构*/
charfirst;
charsecond;
}half;
}number;
number.i=0x4241;/*联合成员赋值*/
printf("%c%c\n",number.half.first, mumber.half.second);
number.half.first='a';/*联合中结构成员赋值*/
number.half.second='b';
printf("%x\n",number.i);
getch();
}
输出结果为:
AB
6261
从上例结果可以看出:当给i赋值后,其低八位也就是first和second的值;当给first和second赋字符后,这两个
字符的ASCII码也将作为i的低八位和高八位。