当前位置:首页 > 内存 > 正文

结构体本身不占用内存

  • 内存
  • 2024-06-08 12:00:30
  • 4574

一、C语言的结构体和共同体的区别是什么?结构是一种由许多“成员”组成的结构。每个成员可以是基本数据类型或构造类型,并且每个成员的数据类型可以相同或不同。Union在同一个内存单元中存储许多不同的变量;这意味着使用覆盖技术,多个变量相互覆盖,因此可以看出,这是一段内存中差异最大的。二、结构体占用的内存是组成部分内存的总和,联合体占用的内存是等于最大组成部分的内存。
具体来说,章程与工会的主要区别如下:
1.结构体和联合都是由许多不同的元素组成,这些元素是由数据类型成员组成的,但不是由时间组成的。选定的成员存储在联合中,并且结构中的所有成员都存在。结构体的每个成员都占用自己的内存空间,并且它们同时存在。结构体变量的总长度等于其所有成员的长度之和。联合体的所有成员不能同时占用其内存空间,也不能同时存在。联合变量的长度等于最长成员的长度。
2.给联合体的不同成员赋值会覆盖其他成员;原有成员的值将不复存在;给结构体的不同成员赋值不会互相影响。其他
二、共用体和结构体的区别

1.变量长度各不相同。

结构体变量占用的内存长度是各个成员占用的内存长度之和。

联合变量占用的内存长度等于最长成员的长度。

2.不同的占用空间

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

关联是由多个成员在同一初始内存地址共享占用的。只能存在一次,所以空间大小就是最大所需的空间。如果我们只查看关联,我们不知道其中存储了什么。

3.单独分配存储空间

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

结构体类型的定义只是用户创建的一个结构体,但是当结构体类型被定义时,系统并不会为其分配存储空间。

参考来源:-C++社区

参考来源:-结构