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