小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前言
这节会学到->运算符和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 结构体,然后就是赋值了