C++学习笔记15:结构

结构是一种可以同时存储多种不同类型数据的复合数据类型。结构使用 struct 定义,并需要明确标注结构内成员的类型和名称,下面程序演示了结构的声明(注意结构声明结束位置花括号后面的分号不能省略)、结构变量的创建以及使用成员运算符(.)访问结构成员。

//structur.cpp -- a simple structure C++结构
#include <iostream>

struct inflatable                         //声明结构,结构名为inflatable
{
	char name[20];                        //定义结构的成员
	float volume;
	double price;
};

int main()
{
	using namespace std;
	inflatable guest =                    //定义inflatable类型的结构变量
	{
		"Glorious Gloria",                //定义成员的值,以逗号隔开
		1.88,
		29.99
	};

	inflatable pal =
	{
		"Audacious Arthur",
		3.12,
		32.99
	};

	cout << "Expend your guest list with " << guest.name;  //访问结构变量的成员
	cout << " and " << pal.name << "!\n";
	cout << "You can have both for $";
	cout << guest.price + pal.price << "!\n";

	return 0;
}

可以使用赋值运算符(=)将结构赋给另一个同类型的结构,这样结构中每个成员都将被设置为另一个结构中相应成员的值,即时成员是数组,这种赋值被称为成员赋值(memberwise assignment),如下面程序所示。

//assgn_st.cpp -- assigning structures 结构赋值
#include <iostream>

using namespace std;

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

int main()
{
	inflatable bouquet =
	{
		"Sunflowers",
		0.20,
		12.49
	};
	inflatable choice;
	cout << "bouquet: " << bouquet.name << " for $";
	cout << bouquet.price << endl;

	choice = bouquet;        //将bouquet结构的值赋给choice结构
	cout << "choice: " << choice.name << " for $";
	cout << choice.price << endl;

	return 0;
}

定义结构和创建结构变量的工作可以同时完成,只需将变量名放在声明结构结束括号的后面即可,如:
struct perks
{
    int key_number;
    char car[12];
} mr_smith, ms_jones;      //在声明perks结构的同时,创建了mr_smith和ms_jones两个结构变量。
利用上面方式创建结构变量的同时,可对结构变量进行初始化。如:
struct perks
{
    int key_number;
    char car[12];
} mr_glitz = 
{
    7,
    "Packard"
};
然而,将结构定义和变量声明分开,可以使程序更易于阅读和理解
还可以声明没有名称的结构类型,方法是省略名称,同时定义一种结构类型和一个这种类型的变量:
struct 
{
    int x;
    int y;
} position;
这样将创建一个名为position的结构变量,可以使用成员运算符来访问它的成员(如position.x),但这种类型没有名称,因此以后无法创建这种类型的变量。

结构数组即数组中的每个元素均是一个结构。创建方法和创建基本类型数组完全相同,要初始化结构数组,可以结合使用初始化数组的规则(用逗号分隔每个元素的值,并将这些值用花括号括起)和初始化结构的规则(用逗号分隔每个成员的值,并将这些值用花括号括起)。具体如下面程序所示。

//arrstruc.cpp -- an array of structures 结构数组
#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    //访问结构数组中结构的成员
		<< "\nhave a combine volume of "
		<< guests[0].volume + guests[1].volume << " cubic feet.\n";

	return 0;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值