• C union共用体


    共用体是一种特殊的数据类型,允许您在相同的内存位置存储不同的数据类型。您可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。

    共用体定义:

    第一种方式:

    union Data
    {
    int i;
    float f;
    char str[20];
    } data;

    第二种方式:typedef union Data
    {
    int i;
    float f;
    char str[20];
    } DataAlias;

    void main()
    {
    DataAlias data;
    data.i = 123;
    printf("i:%d ",data.i);
    printf( "Memory size occupied by data : %d ", sizeof(data));
    }

    共用体注意点
    1、共用体所占用的空间取决于占用空间最大的成员。
    2、共用体同一时间只使用一个变量。每次给共用体成员赋值,之前给其它成员赋值被破坏。

    列子:共用体同一时间只使用一个变量

    #include <stdio.h>
    #include <string.h>

    union Data
    {
    int i;
    float f;
    char str[20];
    };

    int main( )
    {
    union Data data;

    data.i = 10;
    data.f = 220.5;
    strcpy( data.str, "C Programming");

    printf( "data.i : %d ", data.i);
    printf( "data.f : %f ", data.f);
    printf( "data.str : %s ", data.str);

    return 0;
    }


    当上面的代码被编译和执行时,它会产生下列结果:
    data.i : 1917853763
    data.f : 4122360580327794860452759994368.000000
    data.str : C Programming


    在这里,我们可以看到共用体的 i 和 f 成员的值有损坏,因为最后赋给变量的值占用了内存位置,这也是 str 成员能够完好输出的原因。现在让我们再来看一个相同的实例,这次我们在同一时间只使用一个变量,这也演示了使用共用体的主要目的:


    #include <stdio.h>
    #include <string.h>

    union Data
    {
    int i;
    float f;
    char str[20];
    };

    int main( )
    {
    union Data data;

    data.i = 10;
    printf( "data.i : %d ", data.i);

    data.f = 220.5;
    printf( "data.f : %f ", data.f);

    strcpy( data.str, "C Programming");
    printf( "data.str : %s ", data.str);

    return 0;
    }


    当上面的代码被编译和执行时,它会产生下列结果:
    data.i : 10
    data.f : 220.500000
    data.str : C Programming


    在这里,所有的成员都能完好输出,因为同一时间只用到一个成员。


  • 相关阅读:
    第十五天-linux系统文件权限详细讲解
    GB28181实现H265 H264摄像头 Web端无插件直播
    海康8700等联网网关通过GB28181接入LiveGBS流媒体服务实现web端无插件直播
    LiveNVR如何对接LiveQing云平台
    Onvif/RTSP视频流对接云平台-实现高性能云端直播及录像存储方案
    Onvif/RTSP摄像头实现按需直播-降低带宽流量使用
    LiveQing
    使用LiveGBS将GB28181流转成RTSP流上大屏
    实现国标GB28181流媒体服务解决方案
    LiveGBS GB28181流媒体服务-产品介绍及相关资源
  • 原文地址:https://www.cnblogs.com/chenweichu/p/6484746.html
Copyright © 2020-2023  润新知