C语言基本教程(四)指针、布局、连系和列举(16)
2.布局和连系的区别
布局和连系有下列区别:
1.布局和连系都是由多个差异的数据范例成员构成,但在任何同一时刻,连系中只存放了一个被选中的成员,而布局的所有成员都存在。
2.对付连系的差异成员赋值,将会对其它成员重写,本来成员的值就不存在了,而对付布局的差异成员赋值是互不影响的。
下面举一个例了来加对深连系的领略。
例4:
main()
{
union{ /*界说一个连系*/
int i;
struct{ /*在连系中界说一个布局*/
char first;
char second;
}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的低八位和高八位。