您的位置:首页 > 编程语言 > C语言/C++

C语言中struct和union,结构体和联合体的区别

2018-03-28 10:30 281 查看
共同体union:
使几个不同类型的变量共占一段内存。
之间可以相互覆盖。
内存大小取最长变量的长度。
赋值时,由于共用一段内存,所以会对其他变量成员重写。

结构体struct:
不同数据整合成一个整体。
每个变量都有自己的内存空间。
内存大小为所有变量所占内存之和。

举个栗子:#include <stdio.h>

typedef union {//定义一个联合
int i;
struct {
char first;
char second;
} half;
} number;

int main() {
number 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
6261
分析
在这里i和half结构是共用内存
number.i=0X4241 给i赋值后,内存中以二进制存储 0100 0010 0100 0001
按顺序对应到结构中
half.first=0100 0010 转换成十进制就是66 (字母A的asc码)
half.second=0100 0001 转换成十进制就是65 (字母B的asc码)
所以输出是AB
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: