在C语言中,结构体(struct)指的是一种数据结构,是C语言中聚合数据类型(aggregate data type)的一类。结构体可以被声明为变量、指针或数组等,用以实现较复杂的数据结构。结构体同时也是一些元素的集合,这些元素称为结构体的成员(member),且这些成员可以为不同的类型,成员一般用名字访问。

1.结构体定义

是由一批数据组合而成的一种新的数据类型,组成结构型数据的每个数据称为结构型数据的“成员”。结构体通常用来表示类型不同但是又相关的若干数据。结构体是C语言中一种重要的数据类型,该数据类型由一组称为成员(或称为域,或称为元素)的不同数据组成,其中每个成员可以具有不同的类型。

结构体定义

2.结构体类型

C++提供了许多种基本的数据类型(如int、float、double、char等)供用户使用。但是由于程序需要处理的问题往往比较复杂,而且呈多样化,已有的数据类型显得不能满足使用要求。因此C++允许用户根据需要自己声明一些类型,用户可以自己声明的类型还有结构体类型(structure)、共用体类型(union)、枚举类型(enumeration)、类类型(class )等,这些统称为用户自定义类型(user-defined type,UDT)。

结构体类型

3.结构体的大小

我们实际生活中,保存的数据一般不会是同一种类型,所以引入了结构体。而结构体的大小也不是成员类型大小的简单相加。需要考虑到系统在存储结构体变量时的地址对齐问题。由于存储变量地址对齐的问题,结构体大小计算必须满足两条原则:结构体成员的偏移量必须是成员大小的整数倍(0被认为是任何数的整数倍);结构体大小必须是所有成员大小的整数倍。

结构体的大小