9 结构体数据类型与链表

上传人:豆浆 文档编号:24942309 上传时间:2017-12-09 格式:PPT 页数:43 大小:301.50KB
返回 下载 相关 举报
9 结构体数据类型与链表_第1页
第1页 / 共43页
9 结构体数据类型与链表_第2页
第2页 / 共43页
9 结构体数据类型与链表_第3页
第3页 / 共43页
9 结构体数据类型与链表_第4页
第4页 / 共43页
9 结构体数据类型与链表_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《9 结构体数据类型与链表》由会员分享,可在线阅读,更多相关《9 结构体数据类型与链表(43页珍藏版)》请在金锄头文库上搜索。

1、第9章 结构体数据类型与链表,9.1 结构体类型的定义,整型 int 基本类型 字符型 char 实型 float,double 枚举类型 enum数据类型 数组 构造类型 结构体 struct 共用体 union 指针 * 空类型 void,数据类型与变量的区别:数据类型只是说明了一个数据结构的模式,但不定义变量,并不要求分配实际的存储空间。变量具有三要素:名字、数据类型、值,变量要分配存储空间,结构体类型与系统预定义的标准类型(如int,char等)一样,可以用来定义变量,结构体类型的定义形式为:struct 结构体类型名 成员说明列表;其中,花括号内的内容是该结构体类型的成员说明,每个成

2、员说明的形式为:类型符 成员名;,struct student int num; char name20; char sex; int age; float score; char addr40;,这里,struct student是程序设计者自己定义的类型,可以用它来定义变量,使变量具有struct student类型,例struct student st1,st220;,struct student int num; char name20; char sex; int age; float score; char addr30;main() struct stru int a; long

3、 b; char c6; ; printf(%d,%d,sizeof(struct student),sizeof(struct stru);,!结构体各成员变量占用独立的存储单元,TC下运行结果为:59,12,struct date int day; int month; int year;,struct person char name20; char address40; float salary; float cost; struct date hiredate;,结构体类型可以嵌套定义,9.2 结构体类型变量9.2.1 结构体类型变量的定义1.先定义结构体类型,再定义结构体变量例如:

4、struct student student1,student2;为使用方便,在程序开头,加上命令:#define STU_TYPE struct student,STU_TYPE int num; char name20; char sex; int age; float score; char addr40;,然后就可以直接用STU_TYPE定义变量,例如:STU_TYPE student1,student2;用这样的方法定义变量和用int、float定义变量的形式相仿,就不必再写关键字struct,如果程序规模比较大,可以将对结构体类型的定义集中放到一个以.h为扩展名的头文件中,哪个源文

5、件需要用到此结构体类型,则可用#include命令将该头文件包含到本文件中,这样做便于结构体类型的装配、修改及使用。,2.在定义结构体类型的同时定义结构体变量struct student int num; char name20; char sex; int age; float score; char addr40;student1,student2;,一般形式:struct 结构体类型名 成员说明表列变量名表列;,3.直接定义结构体类型变量,struct int num; char name20; char sex; int age; float score; char addr40;st

6、udent1,student2;,一般形式:struct 成员说明表列变量名表列;,这种形式虽然简单,但不能在再需要时,使用所定义的结构体类型。,9.2.2 结构体变量的使用引用一个结构体变量有两种方式:通过结构体变量名和通过指向结构体的指针变量。 ”.”和”-”两种符号。(1)由结构体变量名引用其成员结构体变量名.成员名student1.num=20312;,(2)由指向结构体的指针变量引用结构体成员指针变量名-成员名例如:struct node float x,y;p,u,*pt;p.x=12.2;p.y=24.3pt=,12.2,24.3,p,23.7,3.5,u,pt,9.2.3 结构

7、体变量的初始化1.对外部存储类型的结构体变量进行初始化例9.1 分析下列程序的输出结果struct studentlong num;char name20;char sex;char addr40;a=3021103,Jiang Linpan,M,123 ShaoShan Road;void main()printf(No:%ldnName:%snSex:%cnAddress:%sn, a.num,a.name,a.sex,a.addr);,2.对函数内部的结构体变量进行初始化void main() static struct studentlong num;char name20;char

8、sex;char addr40;a=3021103,Jiang Linpan,M,123 ShaoShan Road;printf(No:%ldnName:%snSex:%cnAddress:%sn, a.num,a.name,a.sex,a.addr);,9.2.4 结构体变量的输入与输出注意:不能把一个结构体变量作为一个整体进行输入或输出,应该按成员变量输入输出。例如:struct char name15; char addr20; long num;stud=“Wang Dawei”,”125 Beijing Road”,3021118;,输出stud变量的各成员值:printf(“%s

9、,%s,%ldn”,stud.name,stud.addr,stud.num);puts(stud.name);输入stud变量的各成员值:scanf(“%s,%s,%ld”,stud.name,stud.addr,9.3 结构体类型数组9.3.1 结构体类型数组的定义struct student student30;访问结构体数组元素的成员:结构体数组名元素下标.结构体成员名;student15.num=22316;scanf(“%ld”,9.3.2 结构体类型数组的初始化struct student char name20; long num; int age; char sex; flo

10、at score;students5= “Zhu Dongfen”,3021101,18,M,98, “Zhang Fachong”,3021102,19,M,90.5, “Wang Peng”,3021103,16,M,85, “Zhan hong”,3021104,16,F,95, “Li Linggou”,3021105,20,F,67 ;,9.3.3 结构体数组的使用引用结构体数组元素有如下规则:(1)引用某一元素的一个成员如上例中的studenti.num,假设i=2(2)可以将一个结构体数组元素赋给同一结构体类型数组中的另一个元素,或赋给同一类型的变量struct student

11、students3,student1;student1=students0;students2=students1,(3)不能把结构体数组元素作为一个整体直接进行输入或输出,只能以单个成员对象进行输入输出,例如:scanf(“%s”,students0.name);printf(“%ld”,students0.num);,9.4 结构体类型指针9.4.1 指向结构体变量的指针一般形式:struct 类型名 *指针变量名;例:struct date *pd,date3;pd=pd-month,“*指针变量”表示指针变量所指的对象:(*指针变量).结构体成员名(*pd).month(*pd).da

12、y(*pd).year例9.2 写出程序的执行结果,9.4.2 指向结构体数组元素的指针struct int a; float b;arr3,*p;p=arr;例9.3 输入3个学生的信息并打印出来,arr0,arr1,arr2,p,p+,9.5 结构体与函数9.5.1 结构体变量作为函数参数例9.4 将例9.3中输出的功能用一个函数实现9.5.2 指向结构体变量的指针作为函数参数例9.5 有一个结构体变量stu,内含学生学号、姓名和3门课的成绩。要求在main函数中给变量赋值,在另一函数print中将它们打印输出。,9.5.3 函数的返回值为结构体类型struct student stud1

13、00;for(i=0;i100;i+)studi=input();struct student input() int i; struct student stud; scanf(“%ld”,(2009.9)下面结构体的定义语句中,错误的是 A)struct ord int x;int y;int z; struct ord a; B)struct ord int x;int y;int z; struct ord a; C)struct ord int x;int y;int z; a; D)struct int x;int y;int z; a;,B,(2009.9)有以下程序 #incl

14、ude #include struct A int a; char b10; double c; struct A f(struct A t); main() struct A a=1001,”ZhangDa”,1098.0; a=f(a); printf(“%d,%s,%6.1fn”,a.a,a.b,a.c); struct A f(struct A t) t.a=1002;strcpy(t.b,”ChangRong”);t.c=1202.0;return t; 程序运行后的输出结果是 A)1001,ZhangDa,1098.0 B)1002,ZhangDa,1202.0 C)1001,ChangRong,1098.0 D)1002,ChangRong,1202.0,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号