欢迎来到天天文库
浏览记录
ID:39963311
大小:609.81 KB
页数:85页
时间:2019-07-16
《c语言用户自定义数据类型》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第8章用户自定义数据类型1本章内容8.1结构类型及其变量的定义8.2结构数组8.3结构和指针8.4联合类型8.5枚举类型28.1.1结构类型的定义一.结构类型的概念前面的我们学习了一些简单数据类型(整型、实型、字符型)的定义和应用,还学习了数组(一维、二维)的定义和应用,这些数据类型的特点是:当定义某一特定数据类型,就限定该类型变量的存储特性和取值范围。在日常生活中,我们常会遇到一些需要填写的登记表,如成绩表、通讯地址、员工信息等。其数据类型可能由性质不同的成员组成。3结构类型的概念numbernameSexdepartmentage
2、wage1wage29008806LiFangFInformatio188507809008807LinHongFPersonnel169007609008808WuQiangMTechnical189507909008809LiJunMPersonnel178807609008810ZhangXiaFTechnical17870795上表中数据是由员工的工作证号(number)、姓名(name)、性别(sex)、年龄(age)、部门(department)、工资(wage)等数据项组成的,逻辑上相关的数据。在C语言中,将这种由多个不
3、同类型的数据项组合在一起形成的数据类型,称为结构体类型。4我们可以创建如下的结构类型:structstaff其中staff由用户命名{charnumber[8];charname[10];charsex;intage;chardep[20];floatwage[2];};以上定义了一个结构类型structstaff(与int同地位),它包含了number、name、sex、age、dep、wage等不同类型的数据项。结构类型的概念51.结构体类型说明的一般形式struct[标识符]{结构成员列表;};说明:(1)struct是关键字,
4、声明要定义一个结构类型,结构类型名用标示符命名,要“见名知义”;(2)成员列表给出n个成员声明,成员可以基本类型变量、数组,也可以是另一结构类型变量等,对每个成员必须作类型说明,成员之间用分号分隔;二.结构体类型及结构体变量6学生的基本信息,包括学号、姓名、性别、年龄、班级、成绩等数据项。这些数据项描述了一个学生的几个不同侧面。nonamesexageclassnograde独立的变量:数据项之间无关联nonamesexageclassnograde数据项为一个整体structstudent{charno[9];//学号charnam
5、e[20];//姓名charsex;//性别unsignedintage;//年龄unsignedintclassno;//班级floatgrade;//成绩}72.结构类型的几点说明(1)对于结构类型,系统不会为之分配内存。只有在定义了结构变量后,系统才会分配内存单元给变量。(2)结构是由若干个数据项组成,每个数据项都属于一种已有定义的类型。每一个结构成员都不是独立的,它不是一般的变量,而是跟结构联系在一起。structStudent{intnumbercharname[9];intage;charsex;};intage;char
6、sex;同名的age和sex均不会有命名冲突问题8(3)结构类型可以嵌套定义。所谓嵌套定义是指在一个结构类型中可以包含另一个或一些结构类型,通常用于结构类型的成员是一个结构变量的场合。namebirthdaysexmonthdayyear结构类型的几点说明9结构类型的几点说明structStudent{charname[9];structBirthday{intyear;intmonth;intday;}birthday;charsex;};structStudent{intnumbercharname[9];intage;chars
7、ex;};10(4)允许省略结构类型名,即允许定义无类型名的结构类型。struct{intyear;intmonth;intday;}birthday;无名的结构类型必须后随结构变量(如birthday)的定义,并且仅能一处使用,这种形式通常用于内嵌在结构类型中的结构类型。(5)可以用sizeof运算符来计算结构类型的长度(字节数)例如:printf(“%d”,sizeof(structStudent));结果为18结构类型的几点说明111.结构类型数据对象包括一般变量、指针、数组等,对于成为结构变量、结构指针、结构数组等可以在说明语
8、句中用已定义的结构类型定义结构数据对象,也可以在定义结构类型的同时定义结构数据对象。8.1.2结构类型数据对象的定义及初始化structdate{intmonth;intday;intyear;;};structstaf
此文档下载收益归作者所有