一、结构数组
为什么要使用结构数组?
举个例子来说,假如我们定义了一个结构体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