资源描述:
《C语言程序设计教学课件ppt作者 冯茂岩 孙炯宁第7章 结构体.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C语言程序设计——第7章结构体与共用体结构体结构与函数共用体本章主要内容提示典型程序分析与设计本章学习目标知识目标理解结构体的含义理解指针变量的定义、引用及运算掌握结构体数组的应用掌握动态分配函数掌握链表的相关操作能力目标能利用结构体实现构造类型数据的操作能利用结构体和指针的相关知识实现链式存储结构的应用【学习提示】在数组一章中介绍了关于同类型数据的处理方法,比如,多个数据的排序等操作,但是对于不同数据类型该如何处理?例如,一个班级有40名同学,每个同学有如下属性:姓名,学号,英语成绩,数据库成绩,C语言成绩,姓名、性
2、别以及各科成绩,这些属性的数据类型不同,使用二维数组难以完成,我们就要应用到一种新的构造类型------结构体类型。7.1结构体【7-1】输入学生的学号、姓名及三门课成绩,并输出。#includemain(){structstudent{charnum[9];char*name;floatmath;floatenglish;floatchinese;}s;/*结构体变量s*/scanf("%s%s%f%f%f",s.num,s.name,&s.math,&s.english,&s.chinese);/
3、*输入数据*/printf("numtnametmathtenglishtchinese");printf("%st%st%.1ft%.1ft%.1f",s.num,s.name,s.math,s.english,s.chinese);/*输出数据*/}上例输出结果为:输入:101lilin908985则输出:numnamemathenglishchinese101lilin90.089.085.0【说明】(1)定义结构体类型的关键字是struct(2)student是结构体类型名(3)s是结构
4、体变量名(4)student结构体类型共有5个成员(5)在使用结构体变量是要引用成员(6)通过引用s变量,我们既可以使用字符串,也可以使用实型数据。二。结构体变量的定义与初始化一.结构体类型的定义1.定义一个结构的一般形式为:struct[结构体名]{类型标识符成员名;类型标识符成员名;…………….};成员名的命名应符合标识符的书写规定。例如:例structstudent{intnum;charname[20];floatscore;charaddr[30];};2.结构体类型的嵌套定义例structdata{inty
5、ear;intmonth;intday;};例structstudent{intnum;charname[20];structdatabirthday;/*结构体类型变量作为成员*/}stu1;3.结构类型变量的定义说明结构变量有以下三种方法。以上面定义的student为例来加以说明。先定义结构,再说明结构变量。如:structstudent{intnum;charname[20];floatscore;charaddr[30];};structstudentstu1,stu2;在定义结构类型的同时说明变量。例如:st
6、ructstudent{intnum;charname[20];floatscore;charaddr[30];}stu1,stu2;直接说明结构变量。例如:struct{intnum;charname[20];floatscore;charaddr[30];}stu1,stu2;二.结构体变量初始化。main(){structstudent/*定义结构*/{intnum;charname[20];charsex;intage;floatscore;charaddr[30];}stu1,stu2={102,"Zhang
7、ping",'M',78.5};stu1=stu2;printf("Number=%dName=%s",boy2.num,boy2.name);printf("Sex=%cScore=%f",boy2.sex,boy2.score);}【注意】(1)结构体类型:不分配内存;结构体变量:分配内存(2)结构体类型:不能赋值、存取、运算;结构体变量:可以(3)结构体可嵌套(4)结构体成员名与程序中变量名可相同,不会混淆例structstudent{intnum;charname[20];charsex;int
8、age;floatscore;charaddr[30];};namenumsexagescoreaddr2字节2字节20字节1字节4字节30字节……..结构体类型定义描述结构的组织形式,不分配内存结构体类型定义的作用域三.结构体变量的使用1.表示结构变量成员的一般形式是:结构变量名.成员名例如:stu1.num即stu1的学号st