C++的三种复杂数据类型为:结构体,联合体, 以及枚举。
创建数据类型分为两步:
首先,定义结构描述----------它描述并且标记了能够存储在结构中的各种数据类型。
然后然后按照描述创建结构变量(结构数据对象)。
例如:
struct inflatable { char name[20]; float volume; double price; };
此新类的名称叫做inflatable,这样·就可以像int,char和double那样创建数据变量。其作用域和其他简单的数据类型是一样的。
初始化方法:
infatable hats={"Jack",1.123,12.33};(C++11支持将列表初始化用于结构)。且等号是可选的。如果大括弧内没有任何东西,各个成员都将被初始化为零。
结构可以作为函数参数,也可以用等号进行直接赋值,将一个结构变量赋值给另一个结构变量。
可以同时完成结构的定义以及结构变量的创建工作。只需将变量名放在结束括号的后面即可。
struct perks { int key_num; char name[20]; }ms_smith,ms_jone;其中ms_smith和ms_jone便是结构变量,相当于hats,perks是结构的名称。
还可以声明没有名称的结构类型。方法是省略名称。
strcut
{
int x;
int y;
}position;
这样将创建一个position的结构变量。可以运用成员运算符访问它的成员,但这种类型没有名称,因此以后无法创建这种类型的变量。
union one4all { int int_val; long long_val; double double_val };
创建和声明和结构体类似,但是不同之处在于联合体每次智能存储一个值。因此他必须有足够大的控件来存储最大的成员,所以联合体的长度是其最大成员的长度。
匿名联合体没有名称,其成员将成为位于相同地址处的变量,显然每次只有一个是当前成员。
union { long id_num; char id_char; };由于联合体是匿名的,因此 id_num和id_char被视为price的两个成员,它们的地址相同。
枚举
C++的enum工具提供了一种创建符号常量的方式。例如enum specttum{red,orange,yellow, green,blue,violert,indigo,ultraiolet};//分别赋值为0-7,后面总比前面大一