版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
任务一学生信息的输入与输出1.结构体结构是一种构造数据类型,由若干成员构成,每个成员具有不同的数据类型。在使用结构体前必须先定义结构,如同在使用函数前必须先声明。(1)结构体的定义结构体定义的一般形式为:struct结构体名称{结构体成员列表;};下一页返回任务一学生信息的输入与输出结构体成员列表由若干个结构体成员构成,对每个成员都必须作类型说明,形式为:成员类型成员变量名称其中成员变量名称应遵从标识符规定。结构体名称不是变量名。2.结构体变量结构体是一个新的数据类型,因此结构体变量也可以像其他类型的变量一样进行赋值、运算,不同的是结构体变量以成员作为基本变量。对于结构体变量的声明通常有3种方法:(1)先定义结构体,再声明结构体变量,例如:上一页下一页返回任务一学生信息的输入与输出Structstudent{
charstu_num[20];//学号charstu_name[10];//姓名
floatstu_chinese;//语文成绩
floatstu_math;//数学成绩
floatstu_english;//英语成绩};Structstudentst1u,stu2;上一页下一页返回任务一学生信息的输入与输出(2)在定义结构体的同时声明结构体变量,例如:Structstudent{
charstu_num[20];//学号
charstu_name[10];//姓名
floatstu_chinese;//语文成绩
floatstu_math;//数学成绩
floatstu_english;//英语成绩}stu1,stu2;直接声明上一页下一页返回任务一学生信息的输入与输出(3)直接声明结构体变量,例如;Struct{
charstu_num[20];//学号
charstu_name[10];//姓名
floatstu_chinese;//语文成绩
floatstu_math;//数学成绩
floatstu_english;//英语成绩}stu1,stu2;使用第3种方法声明的结构也称为无名结构,通常使用在函数内部。上一页下一页返回任务一学生信息的输入与输出3.结构体变量成员的访问访问结构体变量成员的一般形式为:结构体变量名.成员名4.结构体变量的赋值与初始化结构体变量的赋值就是给结构的各成员变量赋值,可以通过输入或赋值语句来完成,例如“stu1.stu_num="0001",stu1.stu_name="liping"”。上一页返回任务二多个学生信息的输入与输出1.结构体数组数组的元素也可以是结构类型的,因此可以构成结构体数组。结构体数组的每一个元素都是具有相同结构类型的结构变量。在实际应用中,经常用结构体数组来表示具有相同数据结构的一个群体,如一个班的学生信息等。结构体数组的定义方法和结构体变量相似,只需说明它为数组类型即可,例如:structstu{
charstu_num[10];
charstu_name[10];下一页返回任务二多个学生信息的输入与输出floatstu_chinese;
floatstu_math;
floatstu_english;
}stu[10];以上代码定义了一个stu结构体数组,数组中共有10个元素,其中每个元素都具有structstu的结构形式。同样对外部结构体数组或静态结构体数组可以作初始化赋值,例如:structstu{
charstu_num[10];上一页下一页返回任务二多个学生信息的输入与输出charstu_name[10];
floatstu_chinese;
floatstu_math;
floatstu_english;}stu[2]={{'0001','zhangsan',75,68,84},{'0002','lisi',66,79,75}.}2.结构体数组的引用上一页下一页返回任务二多个学生信息的输入与输出(1)除了结构体数组的初始化外,对结构体数组赋常数值、输入和输出、各种运算均是对结构体数组元素的成员(相当于普通变量)进行的。结构体数组元素的成员表示为:结构体数组名[下标].成员名在嵌套的情况下为:结构体数组名[下标].结构体成员名.
….结构体成员名.成员名(2)结构体数组元素可相互赋值,例如:stu[1]=stu[2];上一页下一页返回任务二多个学生信息的输入与输出对于结构体数组元素内嵌的结构体类型成员,情况也相同,例如:stu[2].
math=stu[1].
math(3)不允许对结构体数组元素或结构体数组元素内嵌的结构体类型成员整体赋(常数)值;不允许对结构体数组元素或结构体数组元素内嵌的结构体类型成员整体进行输入/输出。(4)在处理结构体问题时经常涉及字符或字符串的输入,这时要注意:①scanf()函数用“%s”输入字符串遇空格即结束,因此输入带空格的字符串可改用gets()函数。上一页下一页返回任务二多个学生信息的输入与输出②在输入字符类型数据时往往得到的是空白符(空格、回车等),甚至运行终止,因此常作相应处理,即在适当的地方增加“getchar();”空输入语句,以消除缓冲区中的空白符。3.结构指针变量一个指针变量当用来指向一个结构变量时,称为结构指针变量。结构指针变量中的值是其所指向的结构体变量的首地址。通过结构指针即可访问该结构体变量,这与数组指针和函数指针的情况是相同的。结构指针变量说明的一般形式为:struct结构名*结构指针变量名;上一页下一页返回任务二多个学生信息的输入与输出结构指针变量也必须先赋值才能使用。赋值是把结构体变量的首地址赋予该指针变量,不能把结构体名赋予该指针变量。结构体名和结构体变量是两个不同的概念,不能混淆。结构体名只能表示一个结构形式,编译系统并不为它分配内存空间。只有当某变量被说明为这种类型的结构时,才为该变量分配存储空间。有了结构指针变量,就能更方便地访问结构体变量的各个成员。其访问的一般形式为:(*结构指针变量).成员名或结构体变量.成员名结构指针变量->成员名上一页下一页返回任务二多个学生信息的输入与输出这3种表示结构成员的形式是完全等效的。结构指针变量可以指向一个结构体数组,这时结构指针变量的值是整个结构体数组的首地址。结构指针变量也可指向结构体数组的一个元素,这时结构指针变量的值是该结构体数组元素的首地址。可以将一维结构体数组名赋给指向结构体变量的指针变量,该指针变量将指向下标为0的元素,它可以在数组元素之间移动。4.结构指针变量作为函数的参数在ANSIC标准中允许用结构体变量作函数参数进行整体传送,但是这种传送要将全部成员逐个传送,特别是成员为数组时将会使传送的时间和空间开销很大,严重地降低了程序的效率。上一页下一页返回任务二多个学生信息的输入与输出因此最好的办法就是使用指针,即用指针变量作函数参数进行传送。这时由实参传向形参的只是地址,从而减少了时间和空间的开销。但是在调用函数时对结构指针所作的任何变动都会影响原来的结构体变量。上一页返回任务三共用体的使用1.共用体共用体也是一种数据类型,它是一种特殊形式的变量。共用体说明和共用体变量定义与结构十分相似。其形式为:union共用体名{数据类型成员名;数据类型成员名;….}共用体变量名;共用体表示几个变量共用一个内存位置,在不同的时间保存不同的数据类型和不同长度的变量。下一页返回任务三共用体的使用当一个共用体被说明时,编译程序自动产生一个变量,其长度为共用体中最大的变量的长度。共用体访问其成员的方法与结构体相同。同样共用体变量也可以定义成数组或指针,但定义为指针时,也要用“->”符号,此时共用体访问成员可表示成:共用体名->成员名共用体变量的说明和结构变量的说明方式相同,也有3种形式,即先定义,再说明;在定义的同时说明;直接说明。对共用体变量的赋值、使用都只能针对变量的成员进行。共用体变量的成员表示为:共用体变量名.成员名上一页下一页返回任务三共用体的使用2.共用体变量共用体变量与结构体变量的说明类似:(1)先定义共用体类型,再用共用体类型定义共用体变量:union类型名{成员表列};union类型名变量名表;(2)在定义共用体类型名的同;时定义共用体变量:union类型名上一页下一页返回任务三共用体的使用{成员表列}变量名表共用体在在内存中的存储结构如图7-3所示。(3)共用体变量的特点:①同一个内存段可以用来存放几种不同类型的成员,但在每一瞬时只能存放其中一种,而不是同时存放几种。②共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用。③共用体变量的地址和它的各成员的地址都是同一地址。上
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人力资源管理综合系统标准模板
- 长期技术保障承诺函(6篇)
- 新办公楼选址完成邀请入驻函3篇范本
- 行业员工手册编制工具企业文化融合版
- 2026年医务人员职业道德试题及答案
- 网络服务领域保障承诺函(9篇)
- 项目管理计划制定与执行监测手册
- 荣誉证牌印制申请承诺函范文4篇
- 人才招聘面试评估参考体系构建
- 服装设计与流行趋势研究指南
- 《危险化学品安全法》解读与要点
- 单位领导讲安全课件
- 维生素C讲解课件
- 新个人所得税培训课件
- 网络游戏公司行政专员招聘题库及答案
- 温泉活动策划方案模板(3篇)
- 危险化学品兼容性矩阵表
- 无人机起降场建设方案
- 2025年6月大学英语六级考试真题第1套(含答案+听力原文+听力音频)
- 2026年加油站生产安全事故应急预案风险评估报告1
- 高二英语选择性必修第二册《Breaking Boundaries Writing a Speech》教学设计
评论
0/150
提交评论