C++之结构体

写在开头:结构体相对于数组的区别:

虽然数组可以储存多个元素,但是数组中所有元素的类型必须相同,在实际生活中,有可能需要存储不同类型的用户信息,因此,我们引入了结构体,用来存储多种数据类型。

举一个简单的例子:

struct inflatable
{
char name[20];
float volume;
double price;
};

结构体变量的访问:

  • 使用成员运算符(.)来访问各个成员。

如下代码:

#include<iostream>
using 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类作为成员。

另外,可以将结构体作为参数传递给函数,也可以让函数返回一个结构体。同时,还可以使用赋值运算符(=)将结构赋给另一个同类型的结构,这样结构体中每个成员都有将被赋值给另一个结构中相应成员的值,即使成员是数组。这种赋值被称为成员赋值。

如下代码:

#include<iostream>
using 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<<gift[99].price<<endl;

 初始化结构体数组的方法:

inflatable guests[2]=
{
{"Bambi",0.5,21.99},
{"Godzilla",2000,565.99}
};

如下代码:

#include<iostream>
using 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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神秘的老年人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值