首先你说的很对 共同体的确占的内存要比结构体小
结构体占用的内存空间,是其元素,占空间的总和,而共用体是,元素中占用空间最大的元素的空间!所以共用体在空间开销上要小一点!
但是既然是两个不同的概念当然是不一样的 要不就没必要定义两个名词了
其实在共用体所用的内存中已经写入了数据!当使用其它元素时!上次使用的内容将被覆盖. 也就是说他使几个不同类型的变量共占一段内存(相互覆盖),每次只有一个能使用
结构体则不然, 每个成员都会有存储空间的,可以一起用.内部变量间是相互独立的,c中的结构体和C++里的类很相像~~
结构体(Structure)是一个或多个相同数据类型或不同数据类型的变量集合在一个名称下的用户自定义数据类型
共用体是在同一存储空间上存不同类型的数据,用于节省空间
而C语言中的函数和高中数学的函数是不同的,数学中的函数是一个具体的解析表达式;而C语言中的函数是实现某一功能的一段代码
共用体所占的内存是这个共用体中最大占用内存的那一个,而结构体是所有成员所占的内存总和
一句话 结构体在没调用它的时候不占内存
共用体占
结构体与共用体
1.结构体(struct)
定义:结构体是由一系列具有相同数据类型或不同数据类型的数据构成的数据集合。
例子:
struct student
{
int num;
char name[20];
};
2.共用体(union)
定义:union维护足够的空间来放置多个数据成员中的“一种”,而不是为每一个数据成员配置 空 间,
在union中所有的数据成员公用一个空间,同一时间只能存储其中的一个数据成员,所有的成员具有相同的起始地址。
例子:
union data
{
int i;
char ch;
float f;
}
大小为4个字节。
可见二者最大的区别就是所占用的内存,一个是分量内存之和,另外一个是等于最大的分量的内存。