结构体数组
(1)先定义结构体类型再定义结构体数组。
如:
struct student
{int num;
char name[20];
char sex;
int age;
float score;
char addr[30];
};
struct student stu[3];
(2)直接定义一个结构体数组。
如:
struct student
{int num;
┆
}stu[3];
或:
struct
{int num;
┆
}stu[3];
99001
zhangxin
M
19
shanghai
99002
Wangli
F
20
98
Beijing
99003
Yanglan
m
21
86
Shenyang
Stu[0]
Stu[1]
Stu[2]
结构体数组的初始化
结构体数组初始化的一般形式是在定义数组的后面加上={初值列表};
如:
struct student
{int num;
┆
}
struct student stu[ ]={{----},{----},----,{----}};
注意:此处有“;”号和无“;”号的区别。
举例
对选举人得票的统计程序。设有三个候选人,每次输入一个得票的候选人的名字,要求最后输出每人得票结果。程序如下:
struct person
{char name[20];
int count;
} leader[3]={“Li”,0,”Zhang”,0,”Wang”,0};
main()
{int I,j;
char name[20];
for(i=1;i<=10;i++)
{scanf(“%s”,name);
for(j=0;j<3;j++)
if(strcmp(name,leader[j].name)leader[j].count++;}
printf(“\n”);
for(i=1;i<3;i++)
printf(“%5s:%d\n”,leader[i].name,leader[i].count);}
两处name
是否为重名
指向结构体类型数据的指针
一个结构体变量指针就是该变量所占据的内存起始地址。可以设一个指针变量,用来指向一个结构体变量,此时该指针变量的值是结构体变量的起始地址。指针变量也可以用来指向结构体数组中的元素。
指向结构体变量的指针
main()
{struct student{
long int num;
char name[20];
char sex;
float score; };
struct student stu1;
struct student *p;
p=&stu1;
=99001;
strcpy(,”Li Lin”);
=‘M’;
=;
printf(“No.%ld\n name:%s\n sex:%c\n score:%f\n”,,,,);
printf(“\nNo.%ld\n
第16讲 结构体与共用体(2) 来自淘豆网m.daumloan.com转载请标明出处.