第8章结构体与共用体ppt课件.ppt
《第8章结构体与共用体ppt课件.ppt》由会员分享,可在线阅读,更多相关《第8章结构体与共用体ppt课件.ppt(40页珍藏版)》请在三一文库上搜索。
1、第8章 结构体与共用体,C语言大学实用教程,西南财经大学经济信息工程学院 刘家芬 ,思考一个问题,在程序里表示一个人(姓名、年龄、性别、),怎么表示? 想表示多个人呢? 如何用计算机程序实现下述表格的管理?,表8-1 某学校学生成绩管理表,数组的解决方法,int studentId30; /* 最多可以管理30个学生, 每个学生的学号用数组的下标表示*/ char studentName3010; char studentSex302; int timeOfEnter30; /*入学时间用int表示*/ int scoreComputer30;/*计算机原理课的成绩*/ int scoreEn
2、glish30; /*英语课的成绩*/ int scoreMath30; /*数学课的成绩*/ int scoreMusic30; /*音乐课的成绩*/,数组的解决方法,int studentId30 = 1,2,3,4,5,6; char studentName3010=“令狐冲“,“林平之“, “岳灵珊“,“任莹莹“; char studentSex302=“男“,“男“,“女“,“女“; int timeOfEnter30 = 1999,1999,1999,1999; int scoreComputer30 = 90,78,89,78; int scoreEnglish30 = 83,9
3、2,72,95; int scoreMath30 = 72,88,98,87; int scoreMusic30 = 82,78,66,90;,数组的解决方法,数据的内存管理方式,分配内存不集中,寻址效率不高 对数组进行赋初值时,容易发生错位 结构显得比较零散,不容易管理,希望的内存分配图,C语言支持一种复合数据类型结构体structure,用于把逻辑相关的多种不同类型的变量组织到一起,这些不同类型的变量占用相邻的一段内存单元。,结构体的解决方法,struct STUDENT int studentID; /*每个学生的序号*/ char studentName10;/*每个学生的姓名*/ c
4、har studentSex4; /*每个学生的性别*/ int timeOfEnter; /*每个学生的入学时间*/ int scoreComputer; /*每个学生的计算机原理成绩*/ int scoreEnglish; /*每个学生的英语成绩*/ int scoreMath; /*每个学生的数学成绩*/ int scoreMusic; /*每个学生的音乐成绩*/ ; 定义了一个新的类型, struct告诉编译系统这是一个“结构体类型“,包括studentID、studentName、studentSex、timeOfEnter等不同类型的数据项。,struct student int
5、num; char name20; char sex; int age; float score; char addr30; ;,一般形式:,struct 结构体名 类型关键字 成员名1; 类型关键字 成员名2; . 类型关键字 成员名n; ;,组成结构体的变量称为结构体的成员(member), 也称元素(element)或域(filed),结构体的定义只定义了数据的组合形式,即声明了一种复杂的数据类型,并未生成任何变量。,结构体的定义,定义结构体类型的变量,新定义的结构体类型, 和int、char等标准类型一样,可以定义该类型的变量。 方法1:先声明结构体类型再定义变量 struct stu
6、dent int num; char name20; char sex; int age; float score; char addr30; ; struct student student1, student2;,定义结构体类型的变量,方法2:声明类型的同时定义变量 struct student int num; char name20; char sex; int age; float score; char addr30; student1,student2;,定义结构体类型的变量,方法3:直接定义结构类型变量 struct int num; char name20; char sex
7、; int age; float score; char addr30; student1,student2;,结构体变量的引用,不能将一个结构体变量作为一个整体进行输入和输出: printf(“%d,%s,%c,%d,%f,%sn“,student1);(错) 只能按如下方式引用结构体变量中的成员: 结构体变量名.成员名 (. 是成员运算符) 例如:student1.score=92.5,结构体变量的引用,对结构体变量的成员,根据其类型可以像普通变量一样进行相应的操作。例如: student1.score=student2.score;(整型赋值) strcpy(student2.name,
8、 “Li Ping“);(字符串复制) 可以引用结构体变量成员的地址,也可以引用结构体变量的地址: scanf(“%o“,(错误),结构体成员的类型,成员可以是任意类型,也包括结构体类型。 struct date int month; int day; int year; struct student int num; int name20; char sex; int age; struct date birthday; char addr30; student1,student2;,如果成员本身又属一个结构体类型,则要用多个成员运算符,一级一级地找到最低一级的成员。并且只能对最低级的成员进
9、行赋值、存取或其他运算操作。 struct date struct student int month; int num; int day; int year; struct date birth; student1, student2; printf(“%d,%d,%dn“,student1.birth); (错误) printf(“%d,%d,%dn“,student1.birth.month, student1.birth.day, student1.birth.year);(正确),结构体变量的初始化,在定义结构体变量时即可指定各个成员的初始值 struct student int n
10、um; char name20; char sex; int age; char home30; student1=23, “Li Ping“, F,18, “Cheng Du“;,给类型起个别名typedef,struct student student1,student2; /* It works */ student student1,student2; /*Can this work?*/ struct student int num; char name20; char sex; int age; float score; char addr30; ; typedef struct
11、student STUD; STUD student1,student2; /* It works! */ typedef为一种已存在的类型定义一个新名字 STUD与 struct student类型是同义词,定义:,struct STUDENT int studentID; char studentName10; char studentSex4; struct date timeOfEnter; int scoreComputer; int scoreEnglish; int scoreMath; int scoreMusic; ; struct STUDENT stu30;,结构体数组,
12、结构体数组中的每个元素都是一个结构体类型的数据。,struct STUDENT int studentID; char studentName10; char studentSex4; struct date timeOfEnter; int scoreComputer; int scoreEnglish; int scoreMath; int scoreMusic; ; struct STUDENT stu30 = 1,“令狐冲“,“男“,1999,12,20,90,83,72,82, 2,“林平之“,“男“,1999,07,06,78,92,88,78, 3,“岳灵珊“,“女“,1999,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 共用 ppt 课件
链接地址:https://www.31doc.com/p-3134163.html