一、共同体作用
提供一种在相同内存位置存储不同数据类型的有效方式
二、共同体定义
union [union tag] //tag是可选参数
{member definition;member definition;...member definition;
} [one or more union variables]; // 共同体变量是可选的
三、共同体占用空间大小
#include <stdio.h>union Data
{int i;float f;char str[20];
} data;int main()
{printf("Memory size occupied by data : %d\n", sizeof(data));return 0;}
执行结果:
共同体占用空间大小是共同体中存储的最大成员的大小。
四、访问共同体成员(同一时间用到三个成员)
#include <stdio.h>
#include <string.h>
union Data
{int i;float f;char str[20];
} data;int main()
{data.i = 10;data.f = 22.5;strcpy(data.str,"C Programming"); //使用拷贝函数对数组进行赋值printf( "data.i : %d\n", data.i);printf( "data.f : %f\n", data.f);printf( "data.str : %s\n", data.str);return 0;
}
执行结果:
共用体的 i 和 f 成员的值有损坏,因为最后赋给变量的值占用了内存位置。
五、访问共同体成员(同一时间只用到一个成员)
#include <stdio.h>
#include <string.h>
union Data
{int i;float f;char str[20];
} data;int main()
{data.i = 10;printf( "data.i : %d\n", data.i);data.f = 22.5;printf( "data.f : %f\n", data.f);strcpy(data.str,"C Programming"); printf( "data.str : %s\n", data.str);return 0;
}
执行结果:
所有的成员都能完好输出,因为同一时间只用到一个成员 。