示例:
struct inflatable
{
char name[20];
float volume;
double price;
}
inflatable val1;
inflatable val2;
inflatable val3;
其中,struct 表名这是一个结构体,inflatable 是这种数据格式的名称,然后就可以像使用 int 一样创建 inflatable 类型的变量了。
C++声明变量时可以省略 struct:
inflatable val2; //C++风格
struct inflatable val1; //C风格
4.4.1 如何使用结构?
示例:
#include <iostream>
using namespace std;
struct inflatable
{
char name[20];
float volume;
double price;
}
int main()
{
inflatable guest = {"aaa", 1.88, 29.99};
inflatable pal = {"bbb", 3.12, 32.99};
cout << guest.name << guest.volume << guest.price << endl;
return 0;
}
4.4.2 C++11结构初始化
可以使用 inflatable val{“ccc”, 0.12, 9.98};,如果大括号中没有任何东西,则数字初始化为0,字符串初始化为空,数组的每个字节设置为零。最后,不允许缩窄转换。
4.4.3 结构可以将 string 类作为成员吗?
4.4.4 其他结构属性
第7章讨论函数时再介绍如何传递和返回结构。另外,可以使用 = 将结构赋值给另一个同类型的结构,这样结构中的每个成员都被设置为另一个结构中相应成员的值,这种赋值称为成员赋值(memberwise assignment)。
可以同时完成定义结构和创建变量:
struct perks
{
int keyNumber;
char car[12];
}val1, val2;
还可以声明没有名字的结构类型。这种只能定义结构的时候创建变量,因为后面因为没有名字而无法创建变量。例如:
struct
{
int x;
int y;
}val1;
与 C 结构不同的是:C++还可以有成员函数。一般这种高级特性用于类中,而不是结构中。
4.4.5 结构中的位字段
与C一样,C++也允许指定占用特定位数的结构成员,这样就使得创建与硬件寄存器对应的数据结构变得非常方便。可以使用没有名称的字段来提供间距。每个成员都被称为位字段(bit field)。示例:
struct torgle_register
{
unsigned int SN : 4; //为 SN 变量分配 4 bits
unsigned int : 4; //4 bits 不使用
bool goodIn : 1;
bool goodTorgle : 1;
}
位字段通常用在低级编程中。