写在开头:结构体相对于数组的区别:
虽然数组可以储存多个元素,但是数组中所有元素的类型必须相同,在实际生活中,有可能需要存储不同类型的用户信息,因此,我们引入了结构体,用来存储多种数据类型。
举一个简单的例子:
struct inflatable
{
char name[20];
float volume;
double price;
};
结构体变量的访问:
- 使用成员运算符(.)来访问各个成员。
如下代码:
#includeusing namespace std; struct inflatable { char name[20]; float volume; double price; }; int main() { inflatable guest = { "Cloorious Gloria", 1.88, 29.99 }; inflatable pal = { "Audacious Arthur", 3.12, 32.99 }; cout << "Expand your guest list with " << guest.name << " and " << pal.name << endl; cout << "You can have both for " << guest.price + pal.price<< endl; return 0; }
对于局部结构体和全局结构体有:
注意:
- struct结构体可以使用string类作为成员。
另外,可以将结构体作为参数传递给函数,也可以让函数返回一个结构体。同时,还可以使用赋值运算符(=)将结构赋给另一个同类型的结构,这样结构体中每个成员都有将被赋值给另一个结构中相应成员的值,即使成员是数组。这种赋值被称为成员赋值。
如下代码:
#includeusing namespace std; struct inflatable { char name[20]; float volume; double price; }; int main() { inflatable bouquet = { "sunflowers", 0.2, 12.49 }; inflatable choice; cout << "bouquet: " << bouquet.name << " for $ " << bouquet.price << endl; choice = bouquet; cout << "choice: " << choice.name << " for $ " << choice.price << endl; return 0; }
由此可看出:
由于choice结构的成员值与bouquet结构中的存储值相同,因此,因此可以同时完成定义结构和创建结构的工作。
如下代码:
struct inflatable
{
char name[20];
float volume;
double price;
}choice,bouquet;
另外,还可以声明没有名称的结构体变量,例如:
struct
{
int x;
int y;
}position;
这样可以创建一个名为position的结构变量,可以使用position.x来访问成员x,但这种类型没有名称,因此以后无法创建这种类型变量。
2.结构数组。
例如:
inflatable gift[100];
gift将是一个inflata数组,其中的每个元素都是inflata对象,可以与成员运算符一起访问。
例如:
cin>>gift[0].volume; cout<初始化结构体数组的方法:
inflatable guests[2]= { {"Bambi",0.5,21.99}, {"Godzilla",2000,565.99} };如下代码:
#includeusing namespace std; struct inflatable { char name[20]; float volume; double price; }; int main() { inflatable guests[2] = { {"Bambi",0.5,21.99}, {"Godzilla",2000,565.99} }; cout << "The guests " << guests[0].name << " and " << guests[1].name << " have a combined volume of " << guests[0].volume + guests[1].volume << " cubic feet." << endl; return 0; }



