C语言共用体(联合体)union解析
程序员文章站
2022-07-11 18:53:01
...
定义一个联合体
typedef union score
{
int a;
char b;
double c;
char d[10];
}s1;
命名方法
1.typedef可以加可以不加加了就在“ }”后面写个名字算是小名或者定义完后再其他地方打个名字;
2.直接union 变量名{};
3union{ }变量名;
联合体所占空间
联合体所占的空间是以包含的最大的变量或者数组所占的字节
,比如我上面定义的就是char d[10];这个联合体占10个字节
存放顺序是按小到大的 0001 0002 0003 0004;
int 一般占四个字节 char 占1个字节 ,所以char这个字节是存放在0001 的 而int是0001到0004 这个使得定义的变量有被覆盖的可能
比如:
s1 score;
score.a = 3;
score.b='s';
printf("%d\n",score.a);
printf("%c\n",score.c);
system("pause");
}
字符一般都会把数字覆盖同时如果要利用%d打印整型则会打印出字符的ASll码,无论是先赋值还是后赋值
如果是两个相同的类型的话则会是后赋值的被打印出来比如:
void main()
{
typedef union score
{
int a;
char b;
double c;
char d[10];
int e;//新增定义一个e
}s1;
s1 score;
score.a = 7;
score.e=6;
这时是e被打印出来
但是
当交换位置时
共用体相比数组和结构体等用相对没那么广泛 数据类型强制转换和单机片某些方面还是有着很方便的作用的。
上一篇: C 语言 共用体(联合体)union
下一篇: C语言的共用体