数组可以存储多个元素,但是所有的元素类型必须相同。结构是一种比数组灵活的数据格式,因为同一个结构可以存储多种类型的数据。结构是用户自定义的类型,而结构声明定义了这种类型的数据属性。定义了数据类型之后,便可以创建这种类型的变量了。创建结构包括两步:首先,定义结构描述——它描述并标记了能够存储在结构中的各种数据类型,然后,按照描述创建结构变量。
1:创建结构体类型
例如:
struct inflatable
{
char name[20];
float volume;
double price;
};
关键字struct声明这是一个结构。标识符inflatable是这种数据格式的名称,因此新类型的名称为inflatable。这样,便可以像创建int或float变量那样
创建inflatable类型的变量了。接下来,大括号中包括了结构存储的数据类型的列表。列表中的每一项都被称为结构成员。因此,inflatable 结构中有三个成员。总之,结构定义指出了新类型(即inflatable)的特征
2:创建结构体变量以及访问结构体成员
c++允许在声明结构变量时省略关键字struct ,与基本类型名用法相同,例如
inflatable hat;
inflatable vincent;
由于hat类型为inflatable,因此可以使用成员运算符(.)来访问各个成员,例如,hat.price指的是price成员。
3:结构声明的位置很重要
,可以将声明放在main()函数中,另一种选择是将声明放在main()的前面。
4:结构的初始化
c++支持将列表初始化用于结构,且等号是可选的,比如
inflatable goose {"Daphne",0.12,29.99};
其次,如果大括号内未包含任何东西,各个成员将被设置为零。
5:结构可以将string类作为成员
只要使用的编译器支持对以string对象作为成员的结构进行初始化,结构中就可以包含string对象,比如
struct inflatable
{
string name;
float volume;
double price;
};
6:结构的其他属性——结构赋值
#include <iostream>
#include <string>//使得string类有效
using namespace std;
struct inflatable
{
string name;
float volume;
double price;
};
int main()
{
inflatable goose =
{
"Daphne",0.12,29.99
};
inflatable choice;
cout<<"goose:"<<goose.name<<" for $";
cout<<goose.price<<endl;
choice=goose;
cout<<"choice:"<<choice.name<<" for $";
cout<<choice.price<<endl;
return 0;
}
输出结果:goose:Daphne for $29.99
choice:Daphne for $29.99
7:结构数组如前所述,inflatable结构中可以包含数组元素,进一步我们可以创建元素为结构的数组。方法和创建基本类型数组一样。例如,创建一个含100个ingflatable结构的数组,可以这样做:
inflatable gifts[100];
这样,gifts就是一个inflatable数组,每个元素(如gifts[1]或gifts[99])都是inflatable对象,可以与成员运算符一起使用
gifts本身是一个数组,而不是结构,因此gifts.price的表述是无用的。
初始化结构数组:可以结合使用初始化数组的规则(逗号分隔每个元素值,并将这些值用花括号括起来)和初始化结构(逗号分隔每个元素值,并将这些值用花括号括起来)的规则。例如,
inflatable gifts[2]=
{
{"Mary",1.2,3.54},
{"Tom",3.2,5.6}
};