前言
这节会学到->运算符和struct结构 学完这些,再去学数据结构就很简单了! 加油!
资源在这
一、结构数组
实例
#include <stdio.h> int main(void) { struct book { char title[MAXTITL]; char author[MAXAUTL]; float value; }; return 0; }
学完这个就能学到->运算符了,学完它再去学数据结构就够了!真的令人兴奋啊!
1.1 声明结构数组
声明结构数组和声明其他类型的数组类似。下面是一个声明结构数组的例子:
struct book library [MAXBKS] ;
以上代码把library声明为一个内含MAXBKS 个元素的数组。数组的每个元素都是一个book类型的数组。因此,library [0]是第1个book类型的结构变量,library[1]是第2个book类型的结构变量,以此类推。参看图14.2可以帮助读者理解。数组名library本身不是结构名,它是一个数组名,该数组中的每个元素都是struct book类型的结构变量。
1.2 标识结构数组的成员
为了标识结构数组中的成员,可以采用访问单独结构的规则:在结构名后面加一个点运算符,再在点运算符后面写上成员名。如下所示: library [ 0 ].value //第1个数组元素与value相关联
library [ 4 ].title //第5个数组元素与title 相关联
注意,数组下标紧跟在library后面,不是成员名后面:
library.value [ 2] //错误 library [2] .valuel //正确 使用library[2] .value的原因是: library[2]是结构变量名,正如library[1]是另一个变量名。顺带一提,下面的表达式代表什么? library [2 ].title [ 4 ] 这是library数组第3个结构变量(library[2]部分)中书名的第5个字符(title[ 4]部分)。
书上写的太详细了!
1.3 结构数组的嵌套
struct names //定义结构体names { char first[LEN]; char last[LEN]; }; struct guy //定义结构体guy { struct names handle; char favfood[LEN]; char job[LEN]; float income; }; //初始化数组 int main(void) { struct guy fellow[2] = { //这是一个结构嵌套,guy结构里嵌套了names结构 //初始化结构数组fellow,每个元素都是一个结构变量 {{"Ewen","Villard"}, "girlled salmon", "personality coach", 68112.00 }, {{"Rodney","Swillbelly"}, "tripe", "tabloid editor", 432400.00 } }; }
应该很容易理解,在结构体gay里放了一个 names 结构体,然后就是赋值了