示例:
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 bitsunsigned int : 4; //4 bits 不使用bool goodIn : 1;bool goodTorgle : 1;}
位字段通常用在低级编程中。
