青岛网站制作选ls15227,小程序免费开发,海南最新消息,微信小程序后端开发语言1.联合体由一个或多个成员组成#xff0c;这些成员可以是不同类型#xff0c;但编译器只为最大的数据成员分配足够的内存空间#xff0c;所有成员占一个空间#xff0c;所以联合体也叫共用体#xff08;可以利用这一点用不同的变量表示同一快空间)#xff0c;给其中一个成…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.b1;
return u.a;}
int main()
{
int agood();
if(a1)
{
printf(小端”);
}
else
{
printf(大端);
}
return 0;
}