1、结构体的定义
struct 结构体名
{
数据类型1 成员名1;
数据类型2 成员名2;
......
};
2、联合体的定义
union 联合体名
{
数据类型1 成员名1;
数据类型2 成员名2;
};
3、两者之间的区别:
(1)在同一时刻,结构体的每个成员都有值,但是联合体在同一时刻只有一个成员有值(或理解为结构体的sizeof是所有成员的和,而联合体的sizeof等于其最长的成员的sizeof);
(2)当对结构体变量的其中一个成员进行修改时,对其他成员没有影响,但是修改联合体时,则会将原来的成员值覆盖。
例子:关于修改联合体的成员的值
- #include <iostream>
- using namespace std;
- int main()
- {
- union test
- {
- int i;
- struct
- {
- char first;
- char second;
- }half;
- }number;
- number.i = 0x4241;
- cout<<number.half.first<<" "<<number.half.second<<endl;
- number.half.first = 'a';
- number.half.second = 'b';
- printf("%x\n", number.i);
- return 0;
- }
输出结果为:
A B
6261
例二:
- #include <iostream>
- using namespace std;
- int main()
- {
- union test
- {
- int i;
- struct
- {
- char first;
- char second;
- }half;
- }number;
- number.i = 0x654241; //注意与前面例子的区别
- cout<<number.half.first<<" "<<number.half.second<<endl;
- number.half.first = 'a';
- number.half.second = 'b';
- printf("%x\n", number.i);
- return 0;
- }
输出结果为:
A B
656261
阅读(6630) | 评论(0) | 转发(0) |