码迷,mamicode.com
首页 > 其他好文 > 详细

结构与联合

时间:2016-08-28 23:57:22      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:

  1. 结构和联合都是由多个不同的数据类型成员组成,但在任何同一时刻,联合中只存放了一个被选中的成员(所有成员共用一块地址空间),而结构的所有成员都存在(不同成员的存放地址不同)。
  2. 对于联合的不同成员赋值,将会对其它成员重写,原来成员的值就不存在了,而对于结构的不同成员赋值是互不影响的。
#include <stdio.h>
union{
  int i;
  char x[2];
}a;
int main(){
    a.x[0] = 10;
    a.x[1] = 1;
    printf("%d", a.i);
}

结果是266(低位低地址,高位高地址,内存占用情况0x010A)

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 0;
}

AB(0x41,对应‘A’,是低位;0x42,对应‘B’,是高位)

6261(number.i和number.half共用一块地址空间)

结构与联合

标签:

原文地址:http://www.cnblogs.com/yingl/p/5816249.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!