C语言:Struct之结构数组以及结构的嵌套

一、结构数组

为什么要使用结构数组?

举个例子来说,假如我们定义了一个结构体book,显然每一本书都可以用一个book类型的结构体来描述。要描述两本书就需要用两个这样的结构变量,以此类推,如果我们要处理10本,100本,1000本...我们难道要一个一个定义吗?我们想到数组这种数据结构,它可以一次性分配一块内存用于存放多个数据,所以我们可以使用一个该结构的数组来存放这1000本(或者更多)的书。我们把这种形式的数组称为结构数组。

结构数组的声明

首先假如我们定义的book结构体如下:

struct book {
	char title[40];
	char author[40];
	float value;
};

声明一个结构数组与声明一个其他类型的数组的方法是一样的:

struct book library[MAXBKS];//MAXBKS是一个int型的整数

这条语句声明library为一个具有MAXBKS个元素的数组,数组的每个元素都是bbook类型的结构。因此,library[0]是一个book结构,library[1]是一个book结构,以此类推。

结构数组的使用方法

用成员运算符("."),来表示结构数组中的成员:

library              //book结构数组
library[2]           //数组中的元素,就是我们定义的第三个book结构 
library[2].title     //char类型的数组,library[2]中的title成员
library[2].title[4]  //library[2]中的title成员数组中的一个字符

二、嵌套结构

一个结构中含有另一个结构,称为嵌套结构。

嵌套结构在很多时候是非常有用的,比如要建立一个关于朋友的档案信息的结构,这些信息中肯定要包含名字(name)这个信息,而一个人的名字又包含了姓和名,这时我们就可以把名字(name)本身表示成一个结构,在建立朋友档案结构的时候直接将其包含进去。

首先建立一个name结构:

struct name{          //name结构声明
	char firstname[20];
	char lastname[20];
};

有了name结构,可以在此基础上建立guy结构了:

struct guy{
	struct name handle;//结构嵌套
	char favfood[20];
	char job[20];
	float income;
};

嵌套结构如何初始化?

初始化方法与普通的结构体初始化方法相同:

struct guy fellow = { //初始化变量
	{"xu","song"},
	"hambergers",
	"student",
	23.00
};

嵌套结构中的成员操作:

fellow.handle.firstname //运行结果:xu
fellow.handel.lastname //运行结果:song
fellow.favfood //运行结果:hambergers
fellow.job //运行结果:student
fellow.income //运行结果:23.00



猜你喜欢

转载自blog.csdn.net/sinat_38486449/article/details/80021066