您好,欢迎来到华佗养生网。
搜索
您的当前位置:首页5、C++结构体的使用

5、C++结构体的使用

来源:华佗养生网
5、C++结构体的使⽤

5、结构体定义

  结构体是⽤户带定义的类型,⽽结构声明定义了这种类型的数据属性。定义了类型后,便可以创建这种类型的变量,因此创建结构包括两步。⾸先,定义结构描述——它描述并标记

了能够存储在结构中的各种数据类型。然后按描述创建结构变量(街噶偶数据对象)。

5.1、定义结构后,便可以创建这种类型的变量了:

inflatable hat;

inflatable woopie_cushioninflatable mainframe

如果熟悉C语⾔中的结构,则可能已经注意到了,C++允许在声明结构变量省略关键字struct:

struct inflatable goose; //C语⾔结构体对象声明,与C++结构体声明都可以inflatable Vincent; //只有C++结构体声明可以⽤

 由于hat的类型是inflatable,因此可以使⽤成员运算符(.)来访问各个成员。例如,hat.volume指的是结构的volume成员,hat.privce,指的是price成员。

#include \"stdafx.h\"

#include //引⽤库函数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;}

  初始化结构体,和访问结构体与标准⽅法相同。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo7.cn 版权所有 湘ICP备2022005869号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务