欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > 【C语言】自定义类型----联合体

【C语言】自定义类型----联合体

2024/10/24 3:22:24 来源:https://blog.csdn.net/hefaxiang/article/details/143091822  浏览:    关键词:【C语言】自定义类型----联合体

本篇文章将将讲解联合体:

1、联合体类型的声明

2、联合体的特点

3、相同成员的结构体和联合体对比:

4、联合体大小的计算

1、联合体类型的声明

联合体关键字:union

                      结构体                                                                                     联合体

关键字:       struct                                                                                          union

成员变量:    多个成员                                                                                    多个成员

内存:             每个成员都有自己独立的空间                                                 所有成员共用同一块内存空间

像结构体一样,联合体也是由一个或者多个成员构成,这些成员可以是不同的类型。

但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。所以联合体又叫共用体

给联合体其中一个成员赋值,其它成员的值也跟着变化。

代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
union  Un
{
    char c;
    int i;
};
int main()
{   //联合体变量的定义
    union Un un = { 0 };
    //计算联合体变量的大小
    printf("%zd\n", sizeof(un));
    return 0;
}

2、联合体的特点

&(un.i)==&(un.c).说明i和c共用同一块内存。

联合体的成员变量是共用同一块内存空间的,这样一个联合体变量的大小,至少是最大成员的大小(因为联合体至少得有能力保存最大的那个成员)。

3、相同成员的结构体和联合体对比:

struct     S

{

char c;

int i ;

};

union   s

{
char c;

int i;

};

4、联合体大小的计算

(1)联合体的大小至少是最大成员得到大小

(2)当最大成员大小不是最大对齐数的整数倍的时候,就要对齐到成员最大对齐数的整数倍。

例如:

联合体是可以节省空间的。

此外,联合体也有匿名联合体类型:
例如:
union 
{
    char arr[5];
    int i;
}un;

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com