Chinaunix首页 | 论坛 | 博客
  • 博客访问: 670099
  • 博文数量: 150
  • 博客积分: 4070
  • 博客等级: 中校
  • 技术积分: 1795
  • 用 户 组: 普通用户
  • 注册时间: 2010-12-23 21:44
文章分类

全部博文(150)

文章存档

2012年(1)

2011年(123)

2010年(26)

分类: C/C++

2011-07-01 20:47:08

1、结构体的定义
   struct 结构体名
   {
       数据类型1 成员名1;
       数据类型2 成员名2;
       ......
   };
2、联合体的定义
   union 联合体名
   {
       数据类型1 成员名1;
       数据类型2 成员名2;
   };
3、两者之间的区别:
 (1)在同一时刻,结构体的每个成员都有值,但是联合体在同一时刻只有一个成员有值(或理解为结构体的sizeof是所有成员的和,而联合体的sizeof等于其最长的成员的sizeof);
 (2)当对结构体变量的其中一个成员进行修改时,对其他成员没有影响,但是修改联合体时,则会将原来的成员值覆盖。
例子:关于修改联合体的成员的值
  1. #include <iostream>
  2. using namespace std;

  3. int main()
  4. {
  5.     union test
  6.     {
  7.         int i;
  8.         struct
  9.         {
  10.             char first;
  11.             char second;
  12.         }half;
  13.     }number;
  14.     number.i = 0x4241;
  15.     cout<<number.half.first<<" "<<number.half.second<<endl;
  16.     number.half.first = 'a';
  17.     number.half.second = 'b';
  18.     printf("%x\n", number.i);

  19.     return 0;
  20. }
输出结果为:
A B
6261
例二:
  1. #include <iostream>
  2. using namespace std;

  3. int main()
  4. {
  5.     union test
  6.     {
  7.         int i;
  8.         struct
  9.         {
  10.             char first;
  11.             char second;
  12.         }half;
  13.     }number;
  14.     number.i = 0x654241;  //注意与前面例子的区别
  15.     cout<<number.half.first<<" "<<number.half.second<<endl;
  16.     number.half.first = 'a';
  17.     number.half.second = 'b';
  18.     printf("%x\n", number.i);

  19.     return 0;
  20. }

输出结果为:

A B
656261

阅读(6646) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~