//引⽤库函数using namespace std; //使⽤命名空间struct inflatable{char name[20]; float volume; double price;};
int main() //主函数,程序执⾏的⼊⼝{
inflatable guest = //结构体初始化 {
\"Glorios Gloria\这⾥的顺序必须要与结构体定义顺序⼀致 1.88, 29.99
}; //这⾥必须要加分号 inflatable pal = {
\"wanghong\ 3.12, 32.99 };
cout << \"Expand your guest list with\" << guest.name; cout << \"and\" << pal.name << \"!\\n\"; cout << \"you can have both for $\";
cout << guest.price + pal.price << \".\\n\"; cin.get();
return 0; //函数返回值}
结果:程序说明:5.2、结构体初始化
与数组⼀样,C++也⽀持将列表初始化⽤于结构,且等号(=)是可选的:
inflatable duck {“Daphne”,0.12,6.}
其次如果⼤括号为包含任何东西,各个成员将被设置为零,
inflatable duck {}; //结构体内所有值为零//最后,不允许缩窄变换。
5.3、结构体将string 类作为成员
#include struct inflatable {std::string name; //⼀定要让结构定义能够访问名称空间std
float volume: double price;};
5.4、其他结构类型
C++使⽤户定义的类型与内置类型尽可能的相似,例如,可以将结构体作为参数传递给函数,也可以让函数返回⼀个结构体。另外,还可以使⽤赋值运算符(=)将结构体赋值给另⼀个同类型的结构。这样结构中每个成员都将被设置为另⼀个结构中相应成员的值,即使是数组。这种赋值称为成员赋值
inflatable doubj {
“asfdasf”, 0.52, 12.51 }
inflatable choice;
choice = doubj;//成员赋值
可以同时完成结构体创建和创建结构体对象的⼯作(将变量名放在结束括号的后⾯即可):
struct perks{
int key_number; char car[12];
}mr_smith,ms_jones;//两个结构体对象。
甚⾄可以初始化以这种⽅式创建的变量:
struct perks{
int key_number; char car[12];}mr_smith = { 7,
\"dsfasdasd\"};
然⽽,将结构体定义和变量声明分开,可以是程序更容易于阅读与理解。5.5、结构数组
inflatable—结构包含⼀个数组(name)。也可以创建元素为结构体的数组,⽅法和创建基本类型数组完全相同。例如,要创建⼀个包含100个inflatable结构的数组,可以这样做:
inflatable gifts[100];//100 个inflatable结构体数组
这样gifts将是⼀个inflatable数组,其中的每个元素(如gifts[0]或gifts[99])都是inflatable对象可以与成员运算符⼀起使⽤。
cin>>gifts[0].volume;
cout< 记住gifts本⾝是⼀个数组,⽽并不是结构体,因此像gifts。price这样的表述是⽆效的。#include \"stdafx.h\"
#include //引⽤库函数using namespace std; //使⽤命名空间struct inflatable{char name[20]; float volume; double price;};
int main() //主函数,程序执⾏的⼊⼝{
inflatable guests[2]= {
{\"Bambi\
{\"Goodzilla\ };
cout << \"The guests\" << guests[0].name << \"and\" << guests[1].name
<< \"\\nhave a combined volume of \"
<< guests[0].volume + guests[1].volume << \" cubic feet.\\n\"; cin.get();
return 0; //函数返回值}
结果:
5.6、结构体中的位字段
与C语⾔⼀样,C++也允许指定占⽤特定位数的结构成员,这使得创建于某个硬件设备上的寄存器对应的数据结构⾮常⽅便。字段的类型为整型或枚举类型,接下来是冒号,冒号后⾯是⼀个数字,它指定了使⽤的位数。可以使⽤没有名称的字段来提供间距。每个成员都被称为字段。下⾯是⼀个例⼦:
struct torgle_register{
unsigned int SN : 4; //4 bit 为SN的值 unsigned int : 4; //4 bit为空⽩的占位 bool goodIn :1; bool goodTorgle : 1;}
初始化结构体,和访问结构体与标准⽅法相同。