>例:输入两个学生的学号、姓名和成绩输出成绩较高学生的学号、姓名和成绩版权所有@陈暂保留所有权利11
版 权 所 有 © 陈 哲 保 留 所 有 权 利 ➢例:输入两个学生的学号、姓名和成绩, 输出成绩较高学生的学号、姓名和成绩。 11
#include <stdio.h>int mainYstruct Studentint num;char name[20l;float score;} sl, s2;scanf("%d%s%f", &sl.num, sl.name, &sl.score);scanf("%d%s%f", &s2.num, s2.name, &s2. score) ;printf("The higher score is:ln");if (sl. score >= s2. score)版权所有@陈哲保留所有权利printf("%d %s %6.2fln", sl.num, sl.name, sl.score);if (sl.score <= s2.score)printf("%d %s %6.2f)n", s2.num, s2.name, s2.score);return O;12
版 权 所 有 © 陈 哲 保 留 所 有 权 利 #include <stdio.h> int main() { struct Student { int num; char name[20]; float score; } s1, s2; scanf("%d%s%f", &s1.num, s1.name, &s1.score); scanf("%d%s%f", &s2.num, s2.name, &s2.score); printf("The higher score is:\n"); if (s1.score >= s2.score) printf("%d %s %6.2f\n", s1.num, s1.name, s1.score); if (s1.score <= s2.score) printf("%d %s %6.2f\n", s2.num, s2.name, s2.score); return 0; } 12
结构体变量地址和动态结构体>结构体变量的每个成员变量都有地址,结构体变量的地址与第一个成员变量的地址相等。例如:struct Student {int num;char name[20l;float score[3l:float average;:版权所有@陈保留所有权利struct Student s;结构体变量s的成员变量的地址包括:&s.nums.name,&s.score[o]等,结构体变量s的地址是&s,与&s.num相等。13
版 权 所 有 © 陈 哲 保 留 所 有 权 利 结构体变量地址和动态结构体 ➢结构体变量的每个成员变量都有地址,结构体变 量的地址与第一个成员变量的地址相等。例如: struct Student { int num; char name[20]; float score[3]; float average; }; struct Student s; 结构体变量s的成员变量的地址包括:&s.num, s.name,&s.score[0]等,结构体变量s的地址是 &s,与&s.num相等。 13
>指针变量可以指向结构体变量的成员变量,通过该指针变量可以间接访问成员变量。例如:struct Student s;int *p = &s.num;*p = 101;printf("%d\n", *p);版权所有@陈暂保留所有权利14
版 权 所 有 © 陈 哲 保 留 所 有 权 利 ➢指针变量可以指向结构体变量的成员变 量,通过该指针变量可以间接访问成员 变量。 例如: struct Student s; int *p = &s.num; *p = 101; printf("%d\n", *p); 14
>指针变量可以指向结构体变量,指针变量的基类型必须与结构体变量的类型相同,通过该指针变量可以间接访问整个结构体变量或者成员变量。以下两个表达式等价:o (*p).memberp->member例如:版权所有@陈暂保留所有权利struct Student s, *p = &s;(*p).num = 101;printf("%d\n", p->num);15
版 权 所 有 © 陈 哲 保 留 所 有 权 利 ➢指针变量可以指向结构体变量,指针变 量的基类型必须与结构体变量的类型相 同,通过该指针变量可以间接访问整个 结构体变量或者成员变量。以下两个表 达式等价: ◦ (*p).member ◦ p->member 例如: struct Student s, *p = &s; (*p).num = 101; printf("%d\n", p->num); 15