结构

比数组更灵活,可以存储多个类型的数据。

结构式用户定义的类型,结构声明定义了这种类型的数据属性。首先定义结构描述,然后描述创建结构变量。

一般结构声明放在放在main中,或main前面(外部声明)。通常外部声明。

还可以使用赋值运算符 = 将结构赋给另一个同类型的结构。

声明

1 struct inflatable
2 {
3     char name[20];
4     float volume;
5     double price;
6 };

初始化

inflatable guest = 
{
    "bob", //name
    1.88, //volume
    29.99 //price
};

inflatable guest  {"bob", 1.88, 29.99}//=可选

inflatable mayor {}; //各个成员默认设置为0

使用类似于类的初始化方法,赋初值

1 Definition for a binary tree node.
2 struct TreeNode {
3     int val;
4     TreeNode *left;
5     TreeNode *right;
6     TreeNode(int x) : val(x), left(NULL), right(NULL) {}
7 };

相当于将x赋给val,将NULL赋给left和right。

 

结构体中的位字段

c++允许指定占用特定位数bit的结构成员。字段类型应为整型或枚举型,接下来是冒号,后面一个数字是指定的使用位数。每个成员都被称为位字段。

1 struct torgle
2 {
3     unsigned int SN : 4; //4 bits for SN value_comp
4     unsigned int : 4;//可以使用没有名称的字段提供间距
5     bool goodIn: 1;
6 };

可以使用标准的结构表示法来访问位字段。

1 torgle tr = {14, true , false};
2 tr.goodIn;//可以成员运算符来访问的

 

创建对象

1 struct inflatable bat;//c风格
2 inflatable bat;//c++风格

可以同时完成定义结构和创建变量的工作,只需将变量名放在结束括号的后面即可。

 1 struct perks
 2 {
 3     int key_number;
 4     char car[10];
 5 }mr_smith, ms_jones; //两个变量名
 6 
 7 初始化方式创建
 8 struct perks
 9 {
10     int key_number;
11     char car[10];
12 }mr_glitz = 
13 {
14     7,
15     "hello"
16 };

声明没有名称的结构并创建变量

1 struct 
2 {
3     int x;
4     int y;
5 }position;

结构数组:创建元素为结构的数组

1 inflatable gifts[100];
2 //也可以使用成员运算符(.)来访问
3 gifts[2].price;

使用new创建动态结构

动态意味着是在运行时,而不是编译时分配的。

1 struct things
2 {
3     int good;
4     int bad;
5 };
6 
7 //创建一个未命名的things类型,并将其地址赋给一个指针。
8 things* ps = new things;

ps是指向结构的指针,所以ps->good就表示该结构的成员good,等同于(*ps).good

posted @ 2019-06-04 14:06  Austin_anheqiao  阅读(177)  评论(0编辑  收藏  举报