结构
结构是一种比数组更灵活的数据格式,因为同一个结构可以存储多种类型的数据。
结构是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扩展了枚举,增加了作用域内枚举。