为了方便分配内存,C语言中为用户提供了占用内存不同长度的数据类型,如int,float,char等,当同样地数据类型有序的组合在一起时组成了数组,但是实际应用过程中常常会遇到不同的数据类型组合在一起的情况,比如定义一个人时,需要年龄,性别,住址等信息。用C语言描述时即是int(年龄),char(性别),char[](家庭住址),当把不同的数据类型组合在一起时,就组成了结构体。
C语言的结构体定义形式为struct 结构体名{成员列表};不同的成员列表用分号‘;’隔开。
当使用定义的结构体,定义结构体变量时,有两种方式:
1 定义结构体的同时初始化结构体变量,如
struct student{int age;*char name;int score} stu1 ,stu2;//定义了两个结构体变量stu1,stu2;
2 先定义结构体,后初始化变量,如
struct student{int age;*char name;int score};//先定义结构体
struct student stu1;
stu1.age = 20;stu1.name = "张三";stu1.score = 99;
和C语言中其他的基本数据类型一样,结构体数据类型也可以用来定义结构体数组,结构体数组的初始化同样有两种方式:定义的同时初始化和先定义后初始化。
下面是关于结构体数组的一个应用:
#include "stdafx.h"
int main(int argc, char* argv[])
{
//结构体数组的应用
struct student{
char name[20];
int score;
} class[5] = {
{"张三",59},
{"李四",60},
{"王五",80},
{"周七",90},
{"朱八",100}
};
int sum = 0;
int count = 0;
for(int i = 0;i < 5;i++)
{
sum += class[i].score;
if(class[i].score < 60)
{
count++;
printf("第%d个不及格的人\n姓名:%s\n分数:%d\n\n",
count,class[i].name,class[i].score);
}
}
float aveScore = (float)sum/5;
printf("班级平均分:%.2f 不及格人数:%d\n",aveScore,count);
return 0;
}