C语⾔:Struct之结构数组以及结构的嵌套
⼀、结构数组
为什么要使⽤结构数组?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

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。