C语言 联合体union

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

C语言中,union语法上与struct相似,union只分配最大成员的空间,所有成员共享这个空间。

#include<stdio.h>

struct A
{
  int a;
  int b;
  int c;
};

union B
{
  int a;
  int b;
  int c;
};

int main() 
{
    printf("%d\n", sizeof(struct A)); 
    printf("%d\n", sizeof(union B)); 
    return 0;
}

union大小端影响

union的使用受系统大小端的影响

union大小端影响

union C
{
    int i;
    char c;
};
union C c;
c.i = 1;
printf("%d\n", c.c); //这里的输出结果跟系统是大端/小端有关,这里都是取低地址的第一个字节打印。

示例:编程判断系统的大小端

#include <stdio.h>

int system_mode()
{
    union SM
    {
        int i;
        char c;
    };

    union SM sm;

    sm.i = 1;

    return sm.c;
}


int main()
{
    printf("System Mode: %d\n", system_mode());
    return 0;
}

输出结果:

编程判断系统的大小端

上面输出结果表示系统是小端模式。

赞(1)
未经允许不得转载:极客笔记 » C语言 联合体union
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址