孙丽云数据结构第2讲结构体(补充).ppt_第1页
孙丽云数据结构第2讲结构体(补充).ppt_第2页
孙丽云数据结构第2讲结构体(补充).ppt_第3页
孙丽云数据结构第2讲结构体(补充).ppt_第4页
孙丽云数据结构第2讲结构体(补充).ppt_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,概 述,在程序的设计中, 会遇见一些关系密切、具有内在联系而数据类型不同的数据。 例如, 一个班、一个年级或全校学生的学籍卡包括他们的学号、姓名、性别、年龄、学习成绩、地址 等。这些数据有的是数字、有的是字符,其数据类型不同, 对于这样一类数据可以用结构体来处理。,2,概 述,结构体是不同数据类型的数据的集合; 结构体是一种数据结构,它需要用户根据自己的需要,按某种规则定义; 结构体是构造类型的数据。,3,结构体的说明,结构体说明的格式:,struct 结构体名 结构体成员表; ;,struct (是保留字)结构体类型标识符。 结构体名(称结构体类型名)由标识符组成。 大括号中的结构体成员表, 称为结构体。 结构体成员表包含若干成员。,成员的表达形式:,数据类型标识符 结构体成员名;,例如: struct date int day; int month; int year; ;,date是结构体名,day、month、year是结构体成员,4,结构体的说明,结构体成员可以是简单变量、数组、指针等。 结构体可以嵌套使用, 即一个结构体变量也可以成 为另一个结构体的成员。,struct student int num; char name20; char sex; int age; struct date birthday; int mon_name4; int *year; ;,结构体成员是数组,结构体成员是结构体,结构体成员是指针,例:,5,结构体变量同其它变量一样也必须先说明、定义, 然后才能使用。 结构体变量定义要按照结构体说明中的结构体类型, 为被定义的结构体变量分配内存单元, 而结构体说明不分配内存。,结构体变量的定义,6,结构体变量的定义,struct 结构体名 结构体成员表; ; . struct 结构体名 结构体变量名表;,其定义格式为:,例如: struct student int num; char name20; char sex; int age; float score; char addr30; ; struct student student1,student2,student3;,7,结构体成员的引用,用结构体成员运算符“.”引用结构体成员格式:,结构体变量名 . 结构体成员,“.” 结构体成员运算符,优先级最高,struct student long num; char name20; char sex; int age; float score; char addr30; ;,用结构成员运算符“.”引用结构体成员 struct student stu1; struct student stu2; stu1.num=2010001; stu1.sex=M; stu1.age=18; stu1.score=87; strcpy(stu1.addr,“Beijing”);,例:,8,结构体变量的初始化,结构体变量的初始化,就是在定义结构体变量的同时,对其成员赋初值。,结构体变量初始化的格式:,struct 结构体名 结构体变量名= 初始数据 ;,与数组类似,结构体变量只可整体初始化,不可整体赋值。,9,例: struct student long num; char name20; char sex; int age; float score; char addr30; ; struct student stu1=2010001, “Li feng”, M, 18, 87.0, “Beijing”;,struct student long num=2010001; char name20=“Li feng”; char sex=M; int age=18; float score=87.0; char addr30=“Beijing”; stu1,stu2;,不能直接在结构体成员表中对成员赋初值,10,结构体数组的概念,结构体数组是其数组元素都是具有相同结构体类型的结构体变量。即结构体数组是结构体变量集合的一种数组。,例如: 一个班级学生的学籍卡的数据结构如下, 要使用该结构体中每个学生的数据, 就要定义30个结构体变量(名), 即:stu1, stu2. stu30。这种方法很不方便。由于该例结构体变量名都相同, 就是最后的序号不同, 这种情况可使用结构体数组。,struct student int num; char name20; char sex; int age; float score; char addr30; stu1,stu2,stu30;,stu30;,11,例如: static struct student stu30; 例中定义了30个结构体变量,下标0-29(下标从0开始), 结构体变量是 stu0、stu1、stu2、 .stu29。,结构体数组也必须先定义或说明,后引用。,结构体数组定义的格式:,struct 结构体名 结构体数组名 元素个数;,结构体数组的定义,12,结构体数组的初始化,结构体数组的初始化格式为:,struct 结构体名 结构体数组名 元素个数= 初始化数据 ;,struct 结构体名 结构体成员表; 结构体数组名 元素个数= 初始化数据 ;,或,结构体即“struct 结构体名”是已被说明的结构体类型。 初始化的数据的个数与结构体数组元素的个数相同及数据类型相匹配。 为了提高可读性,最好每一个数组元素(结构体变量)的初始数据都用花括号括起来。,13,结构体数组的初始化,struct student int num; char name20; char sex; int age; float score; char addr30; ; struct student stu30= 2010001,“Li feng”, M,18, 87,“Beijing”, 2010002,“Wang bing”, M,18,79,“Beijing”, 2010030,“Chen ming”, M,17, 80,“Beijing” ;,例中给结构体变量stu0、 stu1、 Stu29的各个成员赋初值。,例 下述程序的输出结果是: main( ) struct copml int x; int y; coum2=1,3,2,7; printf(“%d”,coum0.y/coum0.x*coum1.x); A) 0 B) 1 C) 3 D) 6,答案: D,3,1,2,15,自定义类型,类型定义就是给已经存在的数据类型重新命名一个新名字。 例如:数据类型float可重新命名为REAL: typedef float REAL; 类型定义的一般形式为

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论