资源描述:
《C语言程序设计 教学课件 作者 路俊维 马雪松主编 第9章 结构体与共用体.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第9章结构体任务:学生信息的管理有一个结构体数组stu[5],每个元素都含有学号、姓名、三门课成绩,要求编写input()和output()函数,分别实现输入和输出5个学生的数据记录。任务所需主要相关知识:结构体类型结构体变量结构体数组结构体指针9.1结构体概述一种构造数据类型——“结构(structure)”或叫“结构体”。“结构”是一种构造类型,它是由若干“成员”组成的。每一个成员可以是一个基本数据类型或者又是一个构造类型。定义一个结构的一般形式为:struct结构名{成员表列};说明:1.struct是定义结构体类型的关键字,结构名由编程者按C语言标识符命名
2、规则指定。2.最后一个花括号外的分号不能省略。3.成员表列由若干个成员组成,每个成员都是该结构的一个组成部分。对每个成员也必须作类型说明,其形式为:类型说明符成员名;例如学生信息的结构体描述:structstud{intnum;charname[20];charsex;floatscore;};在这个结构定义中,结构名为stud,该结构由4个成员组成。第一个成员为num,整型变量;第二个成员为name,字符数组;第三个成员为sex,字符变量;第四个成员为score,实型变量。应注意在括号后的分号是不可少的。结构定义之后,即可进行变量说明。凡说明为结构stud的变量
3、都由上述4个成员组成。由此可见,结构是一种复杂的数据类型,是数目固定,类型不同的若干有序变量的集合。9.1.1结构类型变量的说明1.先定义结构,再说明结构变量如:structstud{intnum;charname[20];charsex;floatscore;};structstudstud1,stud2;说明了两个变量stud1和stud2为stud结构类型。也可以用宏定义使一个符号常量来表示一个结构类型。9.1.1结构类型变量的说明例如:#defineSTUstructstudSTU{intnum;charname[20];charsex;floatscor
4、e;};STUstud1,stud2;STU与structstud等价。9.1.1结构类型变量的说明2.在定义结构类型的同时说明结构变量这种形式的说明的一般形式为:struct结构名{成员表列}变量名表列;例如:structstud{intnum;charname[20];charsex;floatscore;}stud1,stud2;定义了两个structstud类型的变量stud1,stud2。9.1.1结构类型变量的说明3.直接说明结构变量这种形式的说明的一般形式为:struct{成员表列}变量名表列;例如:struct{intnum;charname[20
5、];charsex;floatscore;}stud1,stud2;9.1.1结构类型变量的说明例如嵌套结构体的定义:structdate{intmonth;intday;intyear;};struct{intnum;charname[20];charsex;structdatebirthday;floatscore;}stud1,stud2;9.1.2结构变量成员的表示方法表示结构变量成员的一般形式是:结构变量名.成员名例如:boy1.num即第一个人的学号boy2.sex即第二个人的性别9.1.3结构变量的赋值结构变量的赋值就是给各成员赋值。可用输入语句或赋
6、值语句来完成。【例9.1】给结构变量赋值并输出其值。【程序代码】#includevoidmain(){structstud{intnum;char*name;charsex;floatscore;}stud1,stud2;stud1.num=102;stud1.name="Zhangping";printf("inputsexandscore");scanf("%c%f",&stud1.sex,&stud1.score);stud2=stud1;printf("Number=%dName=%s",stud2.num,stud2.nam
7、e);printf("Sex=%cScore=%f",stud2.sex,stud2.score);}9.1.4结构变量的初始化和其他类型变量一样,对结构变量可以在定义时进行初始化赋值。【例9.2】对结构变量初始化。【程序代码】#includevoidmain(){structstud/*定义结构*/{intnum;char*name;charsex;floatscore;}stud1,stud2={102,"Zhangping",'M',78.5};stud1=stud2;printf("Number=%dName=%s",st
8、ud1.n