一、结构数组
为什么要使用结构数组?
举个例子来说,假如我们定义了一个结构体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成员数组中的一个字符
二、嵌套结构
一个结构中含有另一个结构,称为嵌套结构。
扫描二维码关注公众号,回复:
189031 查看本文章
嵌套结构在很多时候是非常有用的,比如要建立一个关于朋友的档案信息的结构,这些信息中肯定要包含名字(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