共用体和结构体的区别

C语言中共用体和结构体有什么区别啊 我感觉是一样的啊

一、变量长度不同

结构体变量所占内存长度是各成员占的内存长度之和,每个成员分别占有其自己的内存单元。

共用体变量所占的内存长度等于最长的成员的长度。

二、占用空间不同

结构体是同时存在的,并一次占用一段连续的内存空间;

而共用体则是多个共用成员占用同一个开始的内存地址,同时他们只能存在一各,所以空间大小就是最大那个所需的空间,如果单从一个共用体来讲,我们是不知道里面存的是什么内容,需要根据程序上下文才能确定。

三、分配储存空间不同

结构体是由一系列具有相同类型或不同类型的数据构成的数据集合,简称结构。在C语言中,可以定义结构体类型,将多个相关的变量包装成为一个整体来使用。在结构体中的变量,可以是相同、部分相同,或完全不同的数据类型。

结构体类型的定义只是由用户构造了一个结构体,但定义结构体类型时系统并不为其分配存储空间。

参考资料来源:百度百科-c++共用体

参考资料来源:百度百科-结构体

温馨提示:内容为网友见解,仅供参考
第1个回答  2010-07-28
首先你说的很对 共同体的确占的内存要比结构体小

结构体占用的内存空间,是其元素,占空间的总和,而共用体是,元素中占用空间最大的元素的空间!所以共用体在空间开销上要小一点!

但是既然是两个不同的概念当然是不一样的 要不就没必要定义两个名词了

其实在共用体所用的内存中已经写入了数据!当使用其它元素时!上次使用的内容将被覆盖. 也就是说他使几个不同类型的变量共占一段内存(相互覆盖),每次只有一个能使用

结构体则不然, 每个成员都会有存储空间的,可以一起用.内部变量间是相互独立的,c中的结构体和C++里的类很相像~~
第2个回答  推荐于2017-09-14
共用体是构造数据类型,也叫联合体
它使几个不同类型的变量共占一段内存(相互覆盖),每次只有一个能使用.

结构体则不然, 每个成员都会有存储空间的,可以一起用.本回答被提问者采纳
第3个回答  2008-10-26
共用体的成员共用一块内存区,结构体的成员有个自独立的内存区。

所以,共用体的成员,对一个进行修改就会影响别的成员的值,而结构体则不会。
第4个回答  2008-10-26
结构体所占用的内存空间为其成员所需空间总和
而共用体所占用的空间只为其所需内存最大的成员的内存。
相似回答