结构体,枚举体,联合体的区别

供稿:hz-xin.com     日期:2025-01-15
结构体,共用体和枚举类型的基本特点及区别

结构体和数组一样都是构造型数据类型,和数组不同的是,结构体可以处理不同类型的数据。如下定义一个学生信息的结构体:

struct student{

int number;

char sex[3];

char name[10];

srtuct birthday birth;//birthday 是结构体类型的数据,这里没有写出来

char dep[20];

}这个结构体有三种类型的数据,可以看出结构体里还可以有结构体类型、共用体的类型的数据。



共用体是一种多变量共享存储空间的构造类型,它允许几种不同的变量共用同一存储空间。共用体和结构体的区别:1.结构体每一位成员都用来表示一种具体事务的属性,共用体成员可以表示多种属性(同一存储空间可以存储不同类型的数据)。

2.结构体总空间大小,等于各成员总长度,共用体空间等于最大成员占据的空间。

3.共用体不能赋初值。

只要理解了共用体了结构体他们的区别应该能分清楚。



枚举类型是指变量的值可以全部列出,定义一个枚举变量后,变量的值确定在定义之中。它和结构体、共用体的区别在于,枚举元素是常量,只能在定义阶段赋值。枚举是比较特别的类型,有很多的细节,你可以翻阅书本继续理解。

便于多种访问
比如:
union cpp_union
{
struct
{
unsigned char b0:1;
unsigned char b1:1;
unsigned char b2:1;
unsigned char b3:1;
unsigned char b4:1;
unsigned char b5:1;
unsigned char b6:1;
unsigned char b7:1;
}bitfield;
unsigned char bValue;
}data;
这时,你可以data.bitfield.b0=1;来修改某一位的值,有可以data.bValue来获得所有位的值。
类似的,还有把一个int类型的值,分成高低字,分成低字高低字节和高字高低字节的应用。

联合体主要就是他的存贮空间内可实现多种访问接口。

简单说
1,他们都是C语言的一种数据类型。
2,结构体和联合体可以含有多种数据类型,枚举只能含有一种基本数据类型,而且为整型。
3,结构体和联合体所占的空间不同,结构体按照对其方式每个数据类型都是独立的数据空间,整个结构体所占的空间基本上可以等于或者大于每个独立数据空间的和。而联合体所有数据类型都共享最大的那个数据类型的空间,所占的空间为最大的那个数据类型所占的空间。
4,他们的功能不同作用也不尽相同,详细可以baidu一下【结构体,枚举体,联合体的区别】。

  结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。
  枚举在C/C++/c#中,是一个被命名的整型常数的集合,枚举在日常生活中很常见。
  例如表示星期的SUNDAY, MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY,
  SATURDAY, 就是一个枚举。
  在进行某些算法的C语言编程的时候,需要使几种不同类型的变量存放到同一段内存单元中。也就是使用覆盖技术,几个变量互相覆盖。这种几个不同的变量共同占用一段内存的结构,在C语言中,被称作“共用体”类型结构,简称共用体,也叫联合体。

不给分不给你讲

c语言基本数据类型有哪些
C语言基本数据类型有:整型(int)、浮点型(float、double)、字符型(char)、布尔型(bool)。除此之外,还有枚举类型(enum)、数组类型、结构体类型(struct)、联合体类型(union)、指针类型等,但它们在某些方面不是基本数据类型,而是复杂数据类型或指针类型。以下对基本数据类型进行详细解释:整型...

C语言中的基本数据类型有哪些呢?
5. 布尔类型(boolean):C语言中没有内置的布尔类型,但通常可以用整型0和1来表示。6. 复合类型(compound):包括结构体(struct)、联合体(union)、枚举等,用于表示复杂的数据结构。需要注意的是,C语言中的每种数据类型的大小和取值范围都是由具体的实现(编译器、操作系统等)决定的,不同的...

c语言的数据类型有几类分别是什么
2. 复合数据类型:包括数组(array)、结构体(struct)、联合体(union)和指针(pointer)等,用于表示复杂的数据结构。3. 指针类型:包括指向基本数据类型的指针和指向函数的指针等,用于表示内存地址和函数调用。4. 自定义数据类型:用户可以根据需要定义自己的数据类型,例如结构体、枚举类型等。在实...

C++有几种数据类型
基本类型(Base Types): 这些是C++中预定义的最基本的数据类型,包括字符型(char)、整型(int)、浮点型(float)、双精度浮点型(double)以及布尔型(bool)。复合类型(Compound Types): 这些类型是由基本类型通过一些操作生成的。例如,数组(Array)、结构体(Struct)、联合体(Union)等。指针...

c语言的语言组成
struct:结构体声明。(K&R时期引入)union:联合体声明。(K&R时期引入)enum:枚举声明。(C89标准新增)typedef:声明类型别名。(K&R时期引入)sizeof:得到特定类型或特定类型变量的大小。(K&R时期引入)inline:内联函数用于取代宏定义,会在任何调用它的地方展开。(C99标准新增)存储级别关键字auto:指定为自动变量,由编译器...

联合体和结构体的区别
member),且这些成员可以为不同的类型,成员一般用名字访问。在进行某些算法的C语言编程的时候,需要使几种不同类型的变量存放到同一段内存单元中。也就是使用覆盖技术,几个变量互相覆盖。这种几个不同的变量共同占用一段内存的结构,在C语言中,被称作“共用体”类型结构,简称共用体,也叫联合体。

c语言中关键字有哪些?
long long:修饰int,超长整型数据,可省略被修饰的int。signed:修饰整型数据,有符号数据类型。unsigned:修饰整型数据,无符号数据类型。restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。2、复杂类型关键字 struct:结构体声明。union:联合体声明。enum:枚举声明。typedef:...

结构体struct和联合体union(联合)有什么区别呢?
一、结构体struct 各成员各自拥有自己的内存,各自使用互不干涉,同时存在的,遵循内存对齐原则。一个struct变量的总长度等于所有成员的长度之和。二、联合体union 各成员共用一块内存空间,并且同时只有一个成员可以得到这块内存的使用权(对该内存的读写),各变量共用一个内存首地址。因而,联合体比结构...

结构体struct与联合体union的区别
;2、必须是所有成员变量类型大小的整数倍。至少容纳最大e[5]为4*5字节,同时是所有成员变量类型大小的整数倍,double8字节整数倍,因此该联合体占内存24字节。pragma pack (2) 指定按2字节对齐 pragma pack () 取消指定对齐,恢复缺省对齐 结构体(struct)和联合体(union)的区别 ...

typedef 用法详解
为基本数据类型重新命名:如未提供布尔类型时,可以自定义一个布尔类型,如typedef int BOOL;,便于后续编程。跨平台类型定义:通过typedef,可以为浮点类型定义一个平台无关的类型,如typedef double REAL;,根据不同平台的需求进行调整。简化结构体、联合体和枚举类型:如定义结构体struct Point,可以使用...