C++基础总结(3)--复杂数据类型

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)是一种数据格式,它能够存储不同的数据类型,但只能同时存储一种数据类型。结构体可以同时存世int,long和double而联合体只能存储int或long或double
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,后面总比前面大一








原文地址:https://www.cnblogs.com/gaot/p/7709702.html