《C++ Primer Plus》学习笔记——第四章 复合类型(二)

结构

结构是一种比数组更灵活的数据格式,因为同一个结构可以存储多种类型的数据。

结构是OOP堡垒(类)的基石。

结构是用户定义的结构,而结构声明定义了这种类型的数据属性。定义结构描述——他描述并标记了能够存储在结构中的各种数据类型。然后按描述创建结构变量。

使用结构体必须先结构声明

struct inflatable

{

char name[];

float volume;

double price;

}

struct为关键字,用于确定结构的,infallible是结构名称的标识符(可以成为结构名),大括号里面的就是结构成员。结构声明可以放在main()函数中,但要紧跟开始括号后,也可以放在main()之前。使用(.)运算符来访问成员。当指针指向结构体时,要使用(->)来访问。

当定义好结构后,就可以创建这种类型的变量了。(C++在创建结构变量时允许省略struct,C不允许)

inflatable hat;

C++11结构初始化

支持列表初始化,且等号(=)可选。

可以将string类作为成员,但必须包含名称空间。

可以同时完成结构体定义和结构变量创建,甚至可以初始化,但不建议这么做。

结构数组:

初始化可以参考初始化数组的规则。

inflatable guests[2]=

{

      {      },

       {     }

};

结构中的位字段(指定结构成员使用的位数)

在成员后:然后写一个数字,指定位数。

unsigned int SN :4;

共用体

共用体是一种数据类型,它能够存储不同的数据类型,但只能同时存储其中的一种类型。

例:

union one4ll
{
    int int_val;
    long long_val;
    double double_val;
}

使用和结构类似。

共用体的用途之一是,当数据项使用两种或多种格式时(但不会同时使用),可节省空间。

枚举

C++的enum工具提供了另一种创建符号常量的方式,句法与结构相似。

enum specturm {red,orange,yellow,green,blue};

在默认情况下,将整数值赋给枚举量,第一个为0,后面依次加1,若前一个定义了,后一个没定义,后一个为前一个+1。

在不进行强制类型转换的情况下,只能讲枚举赋给这种枚举的变量。(枚举赋给枚举)

如果枚举量为整型,它可以赋给int型变量。反之不可。

如果int值有效,可以通过强制类型转换,将他赋给枚举变量

red=spectrum(3);

可以使用赋值运算符设置枚举量的值

enum bits {one=1,two=2,four=4};

可以创建多个值相同的枚举量。

取值范围定义:知道枚举量的最大值,找到比最大值大的最小二次幂-1。下限同上限,但加上负号。

C++11扩展了枚举,增加了作用域内枚举。

猜你喜欢

转载自blog.csdn.net/GM_AMRC/article/details/83243783