欢迎来到天天文库
浏览记录
ID:59010827
大小:668.00 KB
页数:52页
时间:2020-09-26
《第十章 用户自定义数据类型ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第十章用户自定义数据类型结构体数据类型概述1结构体数据类型的定义及其变量的声明和引用2共用体数据类型定义与共用体变量的声明于引用4结构体变量的应用3为数据类型能够定义新的数据类型名510/5/2021前面学习的数据类型都属于简单数据类型,实际问题的结构是复杂、多样的,仅用内建的简单数据类型进行问题描述是不够的。C语言没有提供表达复杂问题结构的公共数据类型,但它提供了由用户根据不同问题结构定制相应数据类型描述的技术机制。由用户定制的数据类型称为用户自定义数据类型(UserDefinitionDataType)。10/5/202110.1结构体数据类
2、型概述数组是一种构造数据类型,其所有元素的数据类型相同。结构体是另一种构造数据类型,它将具有多个属性的对象作为一个整体来描述。如商品的描述包括商品的编号、名称、价格、生产日期和生产厂商等属性。用基本数据类型来定义和描述商品对象需要设置若干个简单变量或数组变量,它不利于对实际问题求解过程的描述与实现。结构体提供了一个变量名下引用多种数据类型的机制以便把与对象描述相关的各类数据信息组合到一起进行管理。它克服了只用简单数据类型和数组进行表述的缺陷。10/5/202110.2结构体类型定义及其变量的声明和引用10.2.1结构体数据类型的定义struct结
3、构体数据类型名{类型标识符成员变量名;类型标识符成员变量名;……};结构体数据类型名和关键字struct一起构成结构体数据类型标识符。结构体数据类型标识符用于声明结构体数据类型变量(简称结构体变量)struct不能省略基本数据类型或已定义的构造数据类型结构体数据类型标识符10/5/2021例如:structstudent{intnStNo;charcName[20];charcSex;intnAge;floatfScore;charcAddr[30];};保留关键字结构体类型名成员列表分号结构体数据类型的信息存储结构映射实例cNamenStNoc
4、SexnAgefScorecAddr2字节2字节20字节1字节4字节30字节……10/5/2021用结构体数据类型标识符声明的变量称为结构体变量。注意:遵守先声明、后定义,再使用的基本原则。1.先定义结构体类型,再声明结构体变量struct结构体数据类型名{类型标识符成员变量名;类型标识符成员变量名;……};struct结构体数据类型名变量名列表;10.2.2结构体变量的声明例如:structstudent{intnStNo;charcName[20];charcSex;intnAge;floatfScore;charcAddr[30];};st
5、ructstudentstruStu1,struStu2;10/5/20212.在定义结构体数据类型的同时声明结构变量struct结构体数据类型名{类型标识符成员变量名;类型标识符成员变量名;……}变量名表列;例如:structstudent{intnStNo;charcName[20];charcSex;intnAge;floatfScore;charfAddr[30];}struStu1,struStu2;10/5/20213.不定义结构体数据类型名,直接声明结构体变量struct{类型标识符成员变量名;类型标识符成员变量名;……}变量名表列
6、;例如:struct{intnStNo;charcName[20];charcSex;intnAge;floatfScore;charcAddr[30];}struStu1,struStu2;由于无数据类型名,本方法只能在此声明结构体变量,不能在其它地方。在不同地方出现的完全相同的结构体数据类型定义,本质上属于不同的用户自定义数据类型,其声明的变量也属于不同数据类型。10/5/2021说明结构体数据类型与结构体变量的区别:结构体数据类型不涉及内存分配问题,结构体变量涉及内存分配问题。结构体数据类型只是定义数据类型,不涉及赋值、存取、运算等操作行为
7、;结构体变量涉及操作行为。结构体数据类型的定义可嵌套结构体内部的成员变量名与外部的其它变量名可相同,不会混淆(同名屏蔽)结构体数据类型及变量的作用域与生存期例如:structdate{intmonth;intday;intyear;};structstudent{intnum;charname[20];structdatebirthday;}stu;numnamebirthdaymonthdayyear又如:structstudent{intnum;charname[20];structdate{intmonth;intday;intyear;}
8、birthday;}stu;numnamebirthdaymonthdayyear10/5/2021structstudent{intn
此文档下载收益归作者所有