1.对于存储的信息,通常并不是元素的类型都相同,这就导致了结构数据存储结构,同一个结构可以存储多种类型的数据,结构是用户定义的类型,而结构声明定义了这种类型的数据属性。首先,定义结构描述,它描述并标记了能够存储在结构中的各种数据类型。
//实例1
#include<iostream>
using namespace std;
struct inflatable //structure declaration标记inflatable成为新类型的名称
{
char name[20];
float volume;
double price;
};
//和数组一样使用逗号分开,并将这些值用花括号括起。可以将结构的每个成员都初始化为适当类型的数据。
//name成员是一个字符数组,因此可以将其初始化为一个字符串。
int main()
{
inflatable guest =
{
"Glorious Gloria",
1.88,
29.99
};//guset是一个inflatable 结构类型的结构变量
inflatable pal =
{
"Audacious Arthur",
3.12,
32.99
};//pal 是第二个inflatabe 类型的变量
//Note:一些实现方法需要使用静态的inflatable 变量
cout << "Expand your guest list with " << guest.name;
cout << " and " << pal.name << "!\n";
//可将每个结构成员看做是相应类型的变量。因此,pal.price是一个double变量,而pal.name是一个数组
//当程序使用cout显示pal.name时,将把该成员显示为字符串。另外,由于pal.name是一个字符数组,因此
//可以用下标来访问其中的各个字符。例如pal.name[0]是字符A。
cout << "Your can have both for $";
cout << guest.price + pal.price << "\n";
return 0;
}
输出结果如下所示:
结构声明的位置很重要,通常有两种选择,可以将声明放在main()函数中,紧跟开始括号的后面。另一种选择将声明放到main()的前面,对于上述实例,两种选择之间没有实际区别。但是对于那些包含两个或更多函数的程序来说,差别很大。外部声明可以被其后面的任何函数使用而内部声明只能被该声明所属的函数使用。变量也可以在函数内部和外部定义,外部变量由所有的函数共享。
2成员间的赋值,可以使用赋值运算符(=)将结构赋给另一个同类型的结构,这样结构中每个成员都将被设置为另一个结构中相应成员的值,即使成员是数组,这种赋值被称为成员赋值
//实例2
#include<iostream>
using namespace std;
struct inflatable
{
char name[20];
float volume;
double price;
};
int main()
{
inflatable bouquet =
{
"sunflowers",
0.20,
12.49
};
cout<<"bouquet:"<<bouquet.name<<" for $";
cout<<bouquet.price<<endl;
inflatable choice = bouquet;
cout<<"choice:"<<choice.name<<"for $";
cout<<choice.price<<endl;
return 0;
}
输出结果如下所示:
3.结构数组
数组可以创建元素为结构的数组,方法和创建基本类型数组完全相同.guests本身是一个数组,而不是结构,因此像guests.price
是无效的,要初始化数组,可以结合使用初始化数组的规则(用逗号分隔每个元素的值,并将这些值用花括号括起)。由于数组中每个元素都是结构,因此可以使用结构初始化的方式提供它的值。
inflatable guests[2]=
{
{"Katy", 0.5, 21.99},
{"City", 0.6, 32.02}
}