结构数组
既然结构是一个自定义“类型”,那么我们可以像int那样,定义一个结构数组:
struct student ArrayStu[10];
上面的代码一次定义了10个学生。如果同时给这个数组的前2个元素初始化,就写为:
struct student ArrayStr[10]={{“张三”,”男”,18},{“李四”,”女”,22}};
结构数组元素使用时和普通变量一样要加上下标:
ArrayStu[1].age=18;
它把李四的年龄改成了18岁
结构嵌套
struct Student /*学生*/
{
char name[10]; /*姓名*/
char sex[3]; /*性别*/
int age; /*年龄*/
};
struct Room /*寝室*/
{
int number; /*号码*/
struct Student stu; /*学生*/
};
main()
{
struct Room room;
strcpy(room.stu.name,”张三”);
}
※这里举的是结构嵌套结构变量的例子,结构也可以嵌套结构。
结构成员为数组
我们将学生结构定义修改一下:
struct student /*学生*/
{
char name[10]; /*姓名*/
float score[8]; /*本学期8门课成绩*/
float aver; /*平均分*/
};
此结构表示每个学生将本学期8门课的考试成绩放在score数组中,最后通过程序算出平均分存进aver。
// 23-1结构体计算平均分.c #include <stdio.h> //学生结构体 struct student { char name[10]; float score[8]; float aver; }; main() { struct student stu = { "张三",81.1,73.3,68.9,75.7,98,3,99.1,78.1,90.2 }; int i; for (int i = 0; i < 8; i++) { stu.aver += stu.score[i]; } stu.aver = stu.aver / 8; printf("%f ", stu.aver); }