联合体(c语言)
2023-12-14 09:45:04
1.联合体由一个或多个成员组成,这些成员可以是不同类型,但编译器只为最大的数据成员分配足够的内存空间,所有成员占一个空间,所以联合体也叫共用体(可以利用这一点用不同的变量表示同一快空间),给其中一个成员赋值,其余成员也会发生变化
2.联合体的大小:至少是最大数据成员的大小,当最大数据成员不是最大对齐数的整数倍时就要对齐到最大对齐数的整数倍
union A
{
char a[5];
int i;
};
最大数据成员为char类型的数组大小为5,最大对齐数为int的4,不是整数倍,所以char类型数组要对齐到最大数据成员的整数倍也就是8,那么联合体的空间为8为最大数据成员的所占空间大小
3.联合体的作用:节省空间
例子:礼品有书和衣服两种,具有共同的属性库存量,但书有书名这一特殊性质,衣服有尺码这一特殊性质,如果把它们写在一个结构体里那么调用的时候就会出现大量的空间浪费,所以可以使用联合体
struct gift
{
int nuumber;
union
{
struct
{
char size;
}clothes;
struct
{
char[ name[23];
}books
}charactor
};
注意:当结构体或者联合体只使用一次时可以不写结构体或者联合体名只写变量名,多次使用二者必须都写
以上代码可以写出int类型的地址并判断大小端
判断大小端的另一些方法
int good()
{
union
{
char a;
int b;
}u;
u.b=1;
return u.a;
}
int main()
{
int a=good();
if(a==1)
{
printf("小端”);
}
else
{
printf("大端");
}
return 0;
}
文章来源:https://blog.csdn.net/whcwhc111111/article/details/134985139
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!