版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1、第7章结构和链表,7.1结构类型和结构变量7.2结构数组7.3结构与函数7.4链表7.5结合,7.6位域7.7枚举7.8类型定义7.9变量定义,2,基本类型:整数类型、实型、字符类型等。 结构类型:每个元素属于同一类型的数组。 结构类型:配置不同的数据类型以便于整体引用。 例如,学生数据实体可能具有多个信息学编号、姓名、性别、年龄、成绩、家庭地址int char char int float char说明,例如: 此类实体的数据根据所包含的成员类型,不能用单一数组表示,将成员分割为多个简单变量也很不方便,7.1结构类型和结构变量,3,结构类型形式: struct结构类型名称成员说明表在此,
2、关键字“sttp 结构类型名称:定义引用结构的结构变量的结构类型标记。 成员说明表:显示结构类型中每个成员的数据类型和名称。 各成员的说明如下:类型成员名称、1 .结构类型、4、【例】学生基本信息的结构类型: struct student int number; 学号*/char name20; /*姓名、姓名不得超过20个字符*/char sex; 性别*/char地址40; 家庭住址*/; 说明:在c中,如果不引起混乱(例如,结构类型与结构变量的名称相同),则引用结构类型可以不以结构方式启动。 中的组合图层性质变更选项。 如果结构类型的示例5,结构类型的成员是另一种结构类型,则此结构类型是
3、嵌套结构类型。 例如,如果将出生年月日添加到上述的学生信息中,将出生年月日定义为包含日、月、年这3个信息的结构类型,则更完整的学生信息类型被定义为嵌套的结构类型。 嵌套结构类型,6,struct Date/*表示日期*/int day。 /*日*/int month; 月/月/年; /*年*/; 结构调整编号; 学番*/char name20; 姓名*/char sex; 性别* /日期比率; 如果采用/*c语法,birthday的类型采用结构型Date,c语法,则在Date之前以结构导出*/char address40。 家庭住址*/; 嵌套结构类型示例、7和结构类型定义详细列出了结构类型中
4、每个成员的名称及其类型。 实际上,结构类型的定义是指示实体的数据属性的“模式”,不定义特定的数据实体,因此不需要分配存储单元格。 要实际使用以程序结构类型描述的数据信息,必须定义结构变量。 结构变量占用存储单元,并且可以存储结构类型描述的具体数据。 对于结构类型和结构变量,结构类型是表示数据帧的描述文本,并且可以简单地理解为结构变量能够存储实际的数据。 2 .定义结构变量,8,1,结构类型,然后声明结构变量格式: struct结构类型名称结构变量名称表/* C语法*/结构类型名称结构变量名称表/C语法示例:用先前定义的结构类型student声明结构变量代码: struct student st
5、1,st2; /* C语法*/student st1,st2; /C语法其中student是结构类型名称,st1和st2是结构变量。 说明:声明结构变量时,每个结构变量的成员名称、成员数量和每个成员的数据类型与结构类型定义中的成员名称、成员数量和每个成员的数据类型相匹配。结构变量的定义、9、结构变量内存分配单元、10、2、在定义结构类型的同时声明结构变量的一般形式: struct结构类型名称成员说明表结构变量表、结构变量的定义。 例如,结构类型输入号; 学番*/char name20; /*姓名*/int score; 成绩*/stuS; 11、定义结构变量的同时给予初始值,称为结构变量的初始
6、化。 初始化结构变量时,按照结构类型定义的成员的顺序给出各成员的初始值。例如: struct point /*绘图程序的坐标类型*/int x; 英特尔; p1=20、50、p2; /* p1的x值为20,p1的y值为50 */说明:定义结构类型和声明结构变量时也可以进行初始化。 示例:结构点3=10,40,p4=20,50。 注意结构变量初始化、12、结构类型名和结构变量名的差异。 类型不占用存储空间,因此不能为结构类型名称分配值、访问或运算。结构变量占用存储空间,可以在定义时分配初始值,并在定义后引用。 结构变量的初始化时间。 静态和全局结构变量的初始化在程序运行之前完成,如果静态结构变量
7、没有初始值,则值自动设置为0。 局部结构变量的初始化是在每次进入程序控制所属的管辖区域时创建并初始化的,没有指定初始值的局部结构变量的初始值是不确定的。 结构变量初始化说明,13,可定义结构的指针变量(结构指针变量简称为结构指针)。 例如: struct Date *pd、date3; /*定义变量*/pd=/* pd指date3 */定义结构指针pd和结构变量date3,结构指针pd指结构变量date3,即,结构指针pd的内容是结构变量date3所占的存储器块的开头地址。 结构变量初始化说明,14,1,参照结构变量1 .在结构变量名称中直接参照结构变量示例: struct student i
8、nt number; 学番*/char name20; /*姓名* /浮点笔记; 成绩*/st1=10001、张平、85.0、st2; st2=st1; /*将结构变量st1作为整体分配给结构变量st2 */说明: 2个结构变量必须是相同的类型。3 .结构变量的参照、15、2 .对结构变量的指针间参照结构变量例: struct student int number; 学番*/char name20; /*姓名* /浮点笔记; 成绩*/st1=10001、张平、85.0、st2; student *p1=/*定义结构指针变量p1,对结构变量st1的起始地址*/、3 .结构变量的参照,16, 2、
9、使用结构变量和成员运算符的参照方法:结构变量名称.成员名称:点符号前定义的类型为stuSType的结构变量stuS,例如,stuS.name /*直接参照stuS结构变量的name成员*/,3 .结构变量的参照,17,结构变量例如3360打印机(学号: %d姓名: %s成绩: %dn、stuS.number、stuS.name、stuS.score ); 输出学生stuS的信息*/代码: stuS.score =5; /*更新学生stuS的成绩*/strcpy(stuS.name,Li ming ); /*更正学生stuS的名称*/,3 .结构变量引用,18,2 .使用结构指针和指针运算符引用
10、方法:指针变量名称-在成员名称中,“-”是指针运算符,如果继续使用在减号“-”和编号“”之前定义的结构变量stuS,则将结构指针stuSType *sp=/*修改成绩*/,二,引用结构成员,19,3 .使用结构指针和成员运算符引用方法: (*指针变量名).成员名称中必须有括号。 如果省略,则会发生编译错误,因为成员运算符“.”的优先级高于“*”。 例如,不能直接输入/输出stuSType *sp=*/、二、参照结构成员、20、(1)结构变量。 只允许输入和输出结构变量的成员变量。例如,对于前面定义的类型为student的结构变量st1,printf(%s,st1); /*错误,st1为结构变量
11、无法直接输出*/printf(%s, ); /*正确的ST1name成员*/、参照结构变量或成员注意事项,21,(2)如果结构中的成员本身也是结构类型,则必须使用多个成员运算符“.”逐级连续指定嵌套结构成员。 例如,假设您想要引用之前定义类型为student的结构变量st1的birthday成员year。 准确的表示法是st1.birthday.year、参照结构变数或成员注意事项、22、#includestructstuscorre。 int chinese; 内匹配; void main ()浮动压缩机1、压缩机2、压缩机3。 固态硬盘ST 1、st2、st3; 使用/*c
12、语法定义三个结构变量*/printf (请输入三个学生的姓名、语文成绩和数学成绩n )使用scanf(%s%d%d、、【例7.1】结构变量输入三个学生的姓名、语文成绩和数学成绩,然后输入每个学生23、aver1=(ST1. Chineses t1. math )/2.0。 对平均成绩*/aver2=(ST2. Chineses t2. math )/2.0进行修正。 aver3=(ST3. Chineses t3. math )/2.0。 printf (国语t数学t平均成绩n) printf(%stMtMt%6.2fn、、st1.chinese、st1.mat
13、h、aver1); 打印机(% stmt mt %6.2fn、、st2.chinese、st2.math、aver2); 打印机(% stmt mt %6.1fn、、st3.chinese、st3.math、aver3); 【例7.1】程序继续,由24,例7.1可知,一个结构变量只能存储一个学生的基本信息。 描述两个学生的信息需要两个结构变量。 同样,当描述一个类的学生时,显然不希望有独立定义相同类型的许多结构变量的方法。 在c编程中,一般用结构型记述个体的信息结构,用数组表示个体的集合。 如果数组的元素是结构,则该数组称为结构数组。 例如,用结构数组表示一个类
14、的学生,并将有关学生的信息存储在数组元素中。 由此,能够充分反映类的整体性,程序处理也变得更加便利。 7.2定义结构阵列、25、结构阵列的方法类似于定义结构变量的方法。 (1)在定义结构类型之后,声明结构数组struct stuScore char name20。 int chinese; 内匹配; 固态卷轴ST 3; 1、结构数组的定义;(2)在定义结构类型的同时声明结构数组struct stuScore char name20。 int chinese; 内匹配; st3; 26、类似于初始化结构变量,可以在定义结构数组时为结构数组指定初始值。 示例:结构卷轴名称20; int chine
15、se; 内匹配; ST3=张,80,85,李,85,90,王,90,70; 结构数组初始化、27、结构数组引用实际上是指各个元素的成员。与参照结构成员一样,还有(1)使用结构数组元素和成员运算符的方法。 结构数组名元素的下标。 结构成员名称: printf(%s, )、结构成员名称: printf(%s, )等/*第一个学生的名称: Zhang */,2 .结构数组引用,28,2 .结构数组引用,(2)结构指针和指针运算符方法/*定义结构指针sp,结构数组st的第一个元素*/printf(%sn,sp-name ); /*输出第一个学生的名字,张*/sp。 /*结构指针包括以下元素*/printf(%sn,sp-name ) : /*第二个学生的名字Li */,29,2 .输出结构数组的引用,(3)使用结构指针和成员运算符方法: (*指针变量名). 定义stuScore结构指针spt,结构数组st的第一个元素*/printf(”%sn”、(*spt).name ); /*输出学生st0的名字、张*/SPT。 /*结构指针指向以下元素: st1 */printf(”%sn”,spt-name ); /*输出学生st1的姓名,即Li */、30、# includestructstuscorecharname 20。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 黑龙江省哈尔滨市德强高级中学2025-2026学年高二(上)期末物理试卷(Ⅱ卷)(含答案)
- 甘肃省武威市2025-2026学年高三(上)期末物理试卷(含答案)
- 2025~2026学年山东济南市天桥区八年级语文第一学期期末考试试题(含答案)
- 危险化学品试题及答案
- 部编人教版六年级数学上册期末考试题含答案
- 2022~2023民政行业职业鉴定考试题库及答案第256期
- 2023年房屋建筑学考试复习题及参考答案
- 2022~2023粮油食品检验人员考试题库及答案解析第101期
- 变频器应用技术要点
- 三峡新能源考试题及答案
- 数字孪生方案
- 金融领域人工智能算法应用伦理与安全评规范
- 2026长治日报社工作人员招聘劳务派遣人员5人备考题库及答案1套
- 机动车驾校安全培训课件
- 河道清淤作业安全组织施工方案
- 2025年役前训练考试题库及答案
- 2024VADOD临床实践指南:耳鸣的管理课件
- 2026年七台河职业学院单招职业技能测试题库附答案
- 2021海湾消防 GST-LD-8318 紧急启停按钮使用说明书
- 烟花爆竹零售经营安全责任制度
- 2025广东潮州府城文化旅游投资集团有限公司下属企业副总经理岗位招聘1人笔试历年备考题库附带答案详解2套试卷
评论
0/150
提交评论