§15结构体数组 ★结构体数组的定义 种形式 形式三 num struct 25B name i int num; sex char name [20] age char sex num Int age, name 3 stu[2 stul 1 struct student stu[2] seX age
§11.5 结构体数组 结构体数组的定义 三种形式: 形式一 : struct student { int num; char name[20]; char sex; int age; }; struct student stu[2]; 形式二 : struct student { int num; char name[20]; char sex; int age; }stu[2]; 形式三 : struct { int num; char name[20]; char sex; int age; }stu[2]; num name sex age num name sex age stu[0] stu[1] 25B
★结构体数组初始化 分结谢组引用 struct student 引用高m,结构体数组名下标]成员 char name 201 stu[l age++ struct student int num char name 201 stri char sex ang Lin',M, 20) Int age: Li Gang, M, 193 }str[3]; List cRyst E@]n9ne, ZhaoDa); 全部初始化时维数可省
结构体数组初始化 例 struct { int num; char name[20]; char sex; int age; }stu[ ]={{……},{……},{……}}; 顺序初始化: struct student { int num; char name[20]; char sex; int age; }; struct student stu[ ]={100,“Wang Lin”,‘M’,20, 101,“Li Gang”,‘M’,19, 110,“Liu Yan”,‘F’,19}; 例 struct student { int num; char name[20]; char sex; int age; }stu[ ]={{……},{……},{……}}; 分行初始化: struct student { int num; char name[20]; char sex; int age; }; struct student stu[ ]={{100,“Wang Lin”,‘M’,20}, {101,“Li Gang”,‘M’,19}, {110,“Liu Yan”,‘F’,19}}; 全部初始化时维数可省 结构体数组引用 引用方式: 结构体数组名[下标].成员名 struct student { int num; char name[20]; char sex; int age; }str[3]; stu[1].age++; strcpy(stu[0].name,”ZhaoDa”);
例统计后选人选票 struct person name count i char name[201 int count Leader 3][Li, 0, Zhang,, 0, Wang, 0) ng main Wang 0 i int i, j; char leader name[20] for(i=1;i<=10i+) i scanf(%os",leader name) for(=03j<3j++) if(strcmp(leader name, leader [i] name)= leader[].count++ for(i=0;1<3;i++) printf( /o5s:%dn", leader[i]. I name, leader[i]. count);
例 统计后选人选票 struct person { char name[20]; int count; }leader[3]={“Li”,0,“Zhang”,0,”Wang“,0}; main() { int i,j; char leader_name[20]; for(i=1;i<=10;i++) { scanf("%s",leader_name); for(j=0;j<3;j++) if(strcmp(leader_name,leader[j].name)==0) leader[j].count++; } for(i=0;i<3;i++) printf("%5s:%d\n",leader[i].name,leader[i].count); } name count Li Zhang Wang 0 0 0
§11.6结构体和指针 maino i struct student long int num char name 20 char sex 地址 *结例 intloat. score; struct student stul 名成员 ,stui t Pp=&n struct student*p=&st平 p沙1;点n=10su1mum=101;(p)m=101 mum=89101 strcpy(stu 1. name, Li Lin") p->sex=M p->score=89.5 printf("nNo: % nname: %sensex: %cInscore: %f\n (p). num,p-name, stu 1. sex, p->score)
§11.6 结构体和指针 指向结构体变量的指针 ❖定义形式:struct 结构体名 *结构体指针名; 例 struct student *p; ❖使用结构体指针变量引用成员形式 存放结构体变量在内存的起始地址 num name sex age stu p struct student { int num; char name[20]; char sex; int age; }stu; struct student *p=&stu; (*结构体指针名).成员名 结构体指针名->成员名 结构体变量名.成员名 指向运算符 优先级: 1 结合方向:从左向右 例 指向结构体的指针变量 main() { struct student { long int num; char name[20]; char sex; float score; }stu_1,*p; p=&stu_1; stu_1.num=89101; strcpy(stu_1.name,"Li Lin"); p->sex='M'; p->score=89.5; printf("\nNo:%ld\nname:%s\nsex:%c\nscore:%f\n", (*p).num,p->name,stu_1.sex,p->score); } 例 int n; int *p=&n; *p=10; n=10 struct student stu1; struct student *p=&stu1; stu1.num=101; (*p).num=101
★指向结构体数组的指针 例指向结构体数组的指针 struct student int num num char name 201 name stu[o char sex seX p age int age }stu[3]={10101," Li Lin"M,18}, stul {10102," Zhang Fun",M,19} 10104," Wang Min",F,20}}; maino stu2] i struct student*p for(p==stu, p<stu+3; p++) printf("%d%S%c%d\n"p->num, p->name, p X.D-eage
指向结构体数组的指针 例 指向结构体数组的指针 struct student { int num; char name[20]; char sex; int age; }stu[3]={{10101,"Li Lin",'M',18}, {10102,"Zhang Fun",'M',19}, {10104,"Wang Min",'F',20}}; main() { struct student *p; for(p=stu;p<stu+3;p++) printf("%d%s%c%d\n",p->num,p->name,p->sex,p->age); } num name sex age stu[0] p stu[1] stu[2] p+1