第10章结构体与链表.ppt
《第10章结构体与链表.ppt》由会员分享,可在线阅读,更多相关《第10章结构体与链表.ppt(46页珍藏版)》请在三一文库上搜索。
1、第10章 结构体与链表,10.1 结构体类型的定义与变量说明 10.2 结构体类型变量的引用 10.3 结构体与数组 10.4 结构体与指针 10.5 结构体与函数 10.6 链表,10.1 结构体类型的定义与变量说明,10.1.1结构体类型的定义 结构体是具有不同类型的数据的有序集合 结构体定义: struct 结构体类型名 类型标识符 成员名1; 类型标识符 成员名2; 类型标识符 成员名n; ;,struct: 定义结构体类型的关键字; 域: 结构体类型定义中的每1个成员; 成员名的命名规则和变量相同,同一结构体的同层成员不可同名。,例:定义结构体类型student,struct stu
2、dent int num; char name20; char sex; int age; float score; char addr30; ;,struct student应作为一个 整体对待,“;”号不能少!,10.1.2 定义结构体类型变量的定义,一、先定义结构体类型再定义变量名 形式: struct 结构体名 结构体变量名表 例:在前面已定义结构体类型struct student 则可定义:struct student stu1,stu2; stu1,stu2即为struct student类型的变量,二、在定义类型的同时 定义变量 一般形式为: struct 结构体名 成员表列 变
3、量名表列;,struct student int num; char name20; char sex; int age; float score; char addr30; student1,student2;,三、直接定义结构类型 的变量 一般形式为: struct 成员表列 变量名表列; * 不出现结构体名,struct int num; char name20; char sex; int age; float score; char addr30; student1,student2;,10.1.3 结构体类型的嵌套,定义:结构体成员又是一个结构体变量 例: struct date
4、int month; int day; int year; struct student char name20; char sex; int age; struct date birthday; stu1,stu2;,嵌套结构体变量的引用:点标记法,但只能对最低成员进行赋值或存取、运算。 例:stu1.age=20; stu1.dirthday.month=7; stu1.dirthday.day=31; 思考以下的引用 printf(“%d%d%d”,stu1.birthday);() stu1.birthday=12, 31, 1988 ; (),10.2 结构体类型变量引用与初始化,1
5、0.2.1 引用 不能将一个结构体变量作为一个整体进行输入和输出,只能对各个成员分别输入输出 例如: printf(”%d,%s,%c,%d,%f,%sn”,student1);() 引用: student1.num=102;() 成员的引用方式为:结构体变量名. 成员名 注意:成员运算符. 在所有运算符中优先级最高,结构体变量引用方法:,struct clock int hour, minute, second; struct date int year, month, day; struct clock time; today,nextday ; 1. 单独引用结构体变量的成员 today
6、.year=2004; today.time.second=15; 2. 结构体变量作为一个整体引用 nextday=today;,10.2.2 结构体类型变量的初始化,定义时初始化:将各元素初值放在“ ”里赋值给变量。 例: struct student char name20; char sex; int age; float score; stu1, stu2=“Wangwu”,m,20,88.5;,10.3 结构体与数组,10.3.1结构体数组变量的定义 与结构体变量定义类似,只是结构体变量名现为结构体数组变量名 如: struct student int num; char name
7、20; char sex; int age; float score; stu30;,数组各元素在内存中连续存放,如右图所示。,10.3.2结构体数组变量的初始化与引用,初始化:数组=初值表列; 引用: 结构体数组分量 . 结构体成员,struct student int num; char name20; char sex; int age; float score; char addr30; stu3=101,”WGJ”,M,28,88.5,“CS”, 102,”DYH”,F,26,88.0,”CS”, 103,”DYC”,M,24,78.5,”CZ”;,结构体数组程序举例,【例10-5】
8、计算一个班学生的三门课程的平均成绩,并输出该班学生姓名及平均成绩。 程序见下页。,程序,#include #define MAXSIZE 100 struct student char name16;/*学生姓名*/ int grade3,average;/*三门成绩,平均分*/ ;,程序,void main() int i,j,num,s; struct student stuMAXSIZE; printf(“Enter number of students:“); scanf(“%d“, ,10.4 结构体类型与指针,一个结构体变量的指针就是该结构体变量所占据的内存的起始地址。 指针变量可
9、存放结构体变量的指针。 指针变量不仅可以用来指向结构体变量,还可以用来指向结构体数组中的元素。,10.4.1 指向结构体变量的指针,形式:struct 结构体类型名 *结构体指针名 例:struct student stu1,*pst; pst= q=&stu1.num合法,【例10-6】用指向结构体变量的指针来访问学生的各项数据。,#include “string.h“ struct stu int num; char *name; char sex; float score; boy=102,“Zhang ping“,M,78.5,*p;,void main() p= ,10.4.2指向结
10、构体数组的指针,例10-7 输出数组中各元素中各成员的值。,struct student int num; char name20; char sex; int age; ; struct student stu3 =10101,“Zhang“,M,18, 10102,“Li“,M,19, 10103,“Wang“,F,20; /续,main() /*续上页*/ struct student *p; printf(“No. Name Sex Agen“); for (p=stu; pnum, p-name, p-sex, p-age); ,注意事项:,如果p的初值为stu,即指向结构体数组的第
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 10 结构
链接地址:https://www.31doc.com/p-2576641.html