C语言程序设计 结构体与共用体ppt课件

上传人:无*** 文档编号:247303734 上传时间:2024-10-17 格式:PPT 页数:71 大小:1.07MB
返回 下载 相关 举报
C语言程序设计 结构体与共用体ppt课件_第1页
第1页 / 共71页
C语言程序设计 结构体与共用体ppt课件_第2页
第2页 / 共71页
C语言程序设计 结构体与共用体ppt课件_第3页
第3页 / 共71页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,“雪亮工程是以区(县)、乡(镇)、村(社区)三级综治中心为指挥平台、以综治信息化为支撑、以网格化管理为基础、以公共安全视频监控联网应用为重点的“群众性治安防控工程”。,第,12,章 结构体与共用体,程序设计语言,C,本章主要内容,结构体数据类型,共用体数据类型、枚举数据类型、定义数据类型的别名,结构体变量、结构体数组、结构体指针的定义和初始化,结构体成员的引用、成员选择运算符、指向运算符,向函数传递结构体变量、结构体数组、结构体指针,动态数据结构、动态链表,2,C,数,据,类,型,指针类型,空类型,void,定义类型,typedef,构造类型,枚举类型,enum,数组,结构体,struct,共用体,union,基本类型,字符类型,char,实型,单精度型,float,双精度型,double,整 型,短整型,short,长整型,long,整型,int,只能定义单一的数据类型,反映事物单一属性,如定义学生成绩:,float score;,能定义复杂的数据类型,反映事物多个属性,存放相同数据类型的一组数据,如:,float score30;,12.1,从基本数据类型到抽象数据类型,3,4,12.1,从基本数据类型到抽象数据类型,用户自己构造数据类型,复合数据类型,由基本数据类型迭代派生而来,表示复杂的数据对象,典型的代表就是,“,结构体,”,抽象数据类型(,Abstract Data Type,,,ADT,),在复合数据类型基础上增加了对数据的操作,抽象数据类型进而进化为“类,(Class)”,这是一个跨时代的进步,Class,是,Object-Oriented,的一个重要概念,4,12.2.1,问题的提出,12.2.2,结构体类型(结构体模板)定义,12.2.3,结构体变量的定义,12.2.4,结构体变量的初始化,12.2.5,结构体变量的引用,12.2.6,结构体数组,12.2.7,结构体指针,12.2.8,结构体作为函数参数,12.2,结构体,5,12.2.1,问题的提出,一个学生的信息有,学号、姓名、性别、年龄、成绩,等,一本图书的信息有,分类编号、书名、作者、出版社、出版日期、价格、库存量,等,如何,描述和管理,这些,类型不同,的,相关,数据?(,使用二维数组行吗,),问题:,6,12.2.1,问题的提出,解决方案:,1),独立的变量表示:,数据项之间无关联,数据覆盖,7,12.2.1,问题的提出,2),使用一维数组,张三,李四,王五,赵六,麻七,F,M,F,M,F,1001,1002,1003,1004,1005,19,21,18,20,19,age,no,sex,name,分配内存不集中,寻址效率不高;,对数组赋初值时,易发生错位 ;,结构显得零散,不易管理;,90,87,96,87.5,76,score,8,12.2.1,问题的提出,解决方案:,C,语言引入了称为结构体的数据存储方式,“,结构体,”,是一种构造数据类型,它是由若干数据项组合而成的复杂数据对象,这些数据项称为,结构体的成员,。,把,关系紧密,且,逻辑相关,的多种不同类型的变量,组织到统一的名字之下,占用,相邻,的一段内存单元,结构体变量表示:,把,不同类型,的数据组合成一个整体,数据项为一个整体,9,12.2.2,结构体类型定义,struct,结构体名,数据类型名,1,成员名,1,;,数据类型名,2,成员名,2,;,数据类型名,n,成员名,n,;,;,struct,是,关键字,不能省略,合法标识符,可省,:,无名结构体,成员类型可以是,基本型或构造型,以分号,;,结尾,struct Student,char no9;,/,学号,char name20;,/,姓名,char sex;,/,性别,unsigned int age;,/,年龄,float score;,/,成绩,;,struct Date,short,year;,/,年,short,month;,/,月,short,day;,/,日,;,10,12.2.2,结构体类型定义,struct Student,char no9;,/,学号,char name20;,/,姓名,char sex;,/,性别,short int age;,/,年龄,float score;,/,成绩,;,name,no,sex,age,score,9,字节,2,字节,20,字节,1,字节,4,字节,.,结构体类型定义,描述结构的组织形式,注意:,结构体类型只是用户自定义的一种,数据类型,,用来定义描述结构的组织形式,不分配内存,,只有用它来定义某个变量时,才会为该变量分配结构类型所需要大小的内存单元。,11,在结构体中数据类型相同的成员,既可逐个、逐行分别定义,也可合并成一行定义,就象一次定义多个变量一样。,struct Student_Info,char no9;,/,学号,char name20;,/,姓名,char sex;,/,性别,unsigned int age;,/,年龄,unsigned int classno;,/,班级,float grade;,/,成绩,;,struct Student_Info,char no9,name20,sex;,unsigned int age,classno;,float grade;,;,12.2.2,结构体类型定义,12,12.2.3,结构体变量定义,struct,结构体类型名,数据类型名,1,成员名,1,;,数据类型名,n,成员名,n,;,;,struct,结构体类型名 变量列表,;,先定义结构类型,再定义结构变量,struct Student,char no9;,char name20;,char sex;,unsigned int age;,float score;,;,struct Student,stu1,stu2;,定义一个类型为,struct,student,结构体的变量,将会为该变量分配内存,,大小是等于其所有成员变量的大小之和。,sizeof(struct,Student,),13,12.2.3,结构体变量定义,定义结构体类型的同时定义结构体变量,struct,结构体类型名,数据类型名,1,成员名,1,;,数据类型名,n,成员名,n,;,变量名列表,;,struct Student,char no9;,char name20;,char sex;,unsigned int age;,float score;,stu1,stu2,;,struct,char no9;,char name20;,char sex;,unsigned int age;,float score;,stu1,stu2,;,或,无名结构体定义,14,12.2.3,结构体变量定义,成员可以是结构体,结构体可以嵌套,struct date,int month;,int day;,int year;,;,struct student,int no;,char name20;,struct date birthday,;,stu;,struct student,int no;,char name20;,struct date,int month;,int day;,int year;,birthday,;,stu;,no,name,birthday,month,day,year,15,12.2.4,结构体变量的初始化,定义,结构体变量时给结构体成员赋值,struct,结构体类型名,初值表,;,struct,结构体类型名 变量名,=,成员,1,的值,,,成员,n,的值,;,注意:,赋初值时,,中间的数据顺序必须与结构体成员的定义顺序一致,,否则就会出现混乱。,struct Student,stu=“09122325,YangFan,M,19,90;,no,name,sex,age,score,struct Student,stu=19,YangFan,M,“09122325,90;,16,12.2.4,结构体变量的初始化,定义,结构体变量时给结构体成员赋值,struct date,int year,month,day;,struct Stu_Info,char no9;,/,学号,char name20;,/,姓名,char sex;,/,性别,struct date birthday;,/,生日,float score;,/,成绩,;,struct Stu_Info,stu=20020306,ZhangMing,M,1986,12,10,90;,17,12.2.5,结构体变量的引用,引用规则:,不能整体引用,只能引用变量的,成员,引用方式:,结构体变量名,.,成员名,成员,(,分量,),运算符,结合性,:,从左向右,struct student,char no9;,char name20;,char sex;,unsigned int age;,float score;,stu1,stu2,;,if(,stu1=stu2,),.(,),stu1.score=85.5;,stu1.age=stu2.age;,strcpy(stu1.no,“09122414”;),18,12.2.5,结构体变量的引用,可以将,一个结构体变量赋值给另一个结构体变量,结构体嵌套时,逐级引用,struct student,int no;,char name20;,struct date,int month;,int day;,int year;,birthday,;,stu1,stu2;,stu2=stu1;(),stu1.birthday.month=12;,结构体变量名,.,成员名,.,子成员名,最低级子成员名,19,12.2.5,结构体变量的赋值,strcpy(stu1.no,stu.no);,strcpy(stu1.name,stu.name);,stu1.sex=stu.sex;,stu1.age=stu.age;,stu1.score=stu.score,;,struct Student stu;,strcpy(stu.no,“09122424);,strcpy(stu.name,“XuTeng);,stu.sex=M;,stu.age=21;,stu.score=90;,struct Student stu1;,stu1=stu;,如果在定义结构体变量时并未对其赋初始值,那么在程序中要对它赋值的话,就只能一个一个地对其成员,逐一赋值,,或者,用已赋值的同类型的结构体变量对它赋值,逐一赋值,利用已赋值的结构体变量赋值,20,12.2.5,结构体变量应用举例,【,例,】,计算某个学生,5,门课的平均成绩,最高分和最低分,#include,struct Student,float score5;,float avescore,maxscore,minscore;,;,void main(),int i;,struct Student m;,printf(input the score of five course:n);,for(i=0;i 5;i+),/,输入,5,门课的成绩,scanf(%f,m.avescore=0;,m.maxscore=m.score0;,m.minscore=m.score0;,for(i=0;i m.maxscore),m.maxscore=m.scorei;,if(m.scorei m.minscore),m.minscore=m.scorei;,m.avescore/=5;,printf(“avescore=%4.1
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!