首页 > 代码库 > C 联合体

C 联合体

联合体和结构体最大的区别是:

结构体各个成员都有自己的内存空间

联合体所有的成员共用同一个内存空间,空间的大小取决于所有成员中占用内存空间最大的那个。

放一段代码:

#include <stdio.h>
#include <stdlib.h>
typedef union _m
{
    int c;
    char name[20];
}M;
int main()
{
    system("color 2E");
    printf("联合体 M 占用的内存大小 : %d\n" , sizeof(M));
    return 0;
}

其结果为:

技术分享

实际上可以这么理解 : union在同一时间只能使用其所有成员中的一个成员。

如果使用union , 赋值一个成员 , 因为union中所有的成员都使用同一块内存空间 , 实际上其他成员的内存内容也改了 , 再去使用其他成员的话,值都是乱七八糟的。

本文出自 “Better_Power_Wisdom” 博客,请务必保留此出处http://aonaufly.blog.51cto.com/3554853/1918601

C 联合体