共用体和结构体的区别
一、变量长度不同
结构体变量所占内存长度是各成员占的内存长度之和,每个成员分别占有其自己的内存单元。
共用体变量所占的内存长度等于最长的成员的长度。
二、占用空间不同
结构体是同时存在的,并一次占用一段连续的内存空间;
而共用体则是多个共用成员占用同一个开始的内存地址,同时他们只能存在一各,所以空间大小就是最大那个所需的空间,如果单从一个共用体来讲,我们是不知道里面存的是什么内容,需要根据程序上下文才能确定。
三、分配储存空间不同
结构体是由一系列具有相同类型或不同类型的数据构成的数据集合,简称结构。在C语言中,可以定义结构体类型,将多个相关的变量包装成为一个整体来使用。在结构体中的变量,可以是相同、部分相同,或完全不同的数据类型。
结构体类型的定义只是由用户构造了一个结构体,但定义结构体类型时系统并不为其分配存储空间。
百度百科-c++共用体
百度百科-结构体
1. 区别
结构体是多个不同类型变量的组合,其占用的内存大小是所有变量大小的总和
联合体是多个不同类型变量的抽取,其占用内存的大小是联合体中最大的那个变量的大小
2. 解释
结构体中的多个变量同时存在,你可以给其中的每个变量分别赋值。任何一个变量被赋值不影响其他变量。你在需要使用时e69da5e887aae799bee5baa6e997aee7ad9431333337613164每个变量都可以同时被取出使用。
联合体中的多个变量同时只有一个存在。你只能给其中的一个变量赋值。你在给联合体的任何一个变量赋值的时候就覆盖了其他的变量,也就是说只有你刚赋值的这个变量存在,其他都被覆盖掉了
3. 用途
结构体和联合体都用于需要把一组变量联合考虑的场合。结构体变量清晰,便于使用,尤其是要表述一个对象的多个属性时方便有效。但是要占用比较大的内存
联合体同时只有一个变量存在,占用资源少,有助于提高编程效率,但是使用不如结构体这么方便和清晰。
鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com
图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!