C++除了提供多种基本的数据类型(如int、float、double、char等)供用户使用外,还允许用户根据需要自己声明一些类型,例如数组、结构体(structure)类型、共用体(union)类型、枚举(enumeration)类型、类(class)类型等,这些统称为用户自定义类型(user-defined type,UDT)。
1 结构体类型
C++将用户自己指定的、包含有若干个类型不同或相同数据项的这样一种组合项数据类型称为结构体。
声明一个结构体类型的一般形式为:
struct 结构体类型名
{成员列表};
声明结构体类型的位置一般在文件的开头,在所有函数(包括main函数)之前,以便本文件中所有的函数都能利用它来定义变量。当然也可以在函数中声明结构体类型。
C++结构体的成员既可以包括数据(即数据成员),又可以包括函数(即函数成员),以适应面向对象的程序设计。但是由于C++提供了类(class)类型,因此,一般情况下,结构体只含有数据成员而不带函数。
2 结构体类型变量的定义方法及其初始化
声明的结构体类型相当于一个模型,它没有具体的数据,系统也不为其分配实际的内存单元。为了能在程序中使用结构体类型的数据,应当定义结构体类型的变量,并在其中存放具体的数据。
1. 定义结构体类型变量的方法( 3种)
(1) 先声明结构体类型再定义变量名
(2) 在声明类型的同时定义变量
定义的一般形式为
struct 结构体名
{ 成员列表
} 变量名列表;
(3) 直接定义结构体类型变量
定义的一般形式为
struct
{ 成员列表
} 变量名列表;
- 不要误认为结构体类型都有相同的结构。实际上,每一种结构体类型都有自己的结构。
- ② 类型与变量是不同的概念,不要混淆。只能对结构体变量中的成员赋值,而不能对结构体类型赋值。在编译时,是不会为类型分配空间的,只为变量分配空间。
- ③ 对结构体中的成员,可以单独使用,它的作用与地位相当于普通变量。