C语言程序设计第7章自定义数据类型ppt课件_第1页
C语言程序设计第7章自定义数据类型ppt课件_第2页
C语言程序设计第7章自定义数据类型ppt课件_第3页
C语言程序设计第7章自定义数据类型ppt课件_第4页
C语言程序设计第7章自定义数据类型ppt课件_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、C语语言程序言程序设计设计第第7章章 自定义数据类型自定义数据类型2本章主要本章主要内内容容 1. 自定自定义数义数据据类类型型概概念念 2. 结构结构体体类类型型 3. 共用体共用体类类型型 4. 枚枚举类举类型型3自定自定义数义数据据类类型型自定义数据类型是指用户根据需要自己定义的,由多种自定义数据类型是指用户根据需要自己定义的,由多种基本数据类型所构成的复合数据类型。基本数据类型所构成的复合数据类型。共用体类型共用体类型 与结构体类似,不同之处在于共与结构体类似,不同之处在于共用体中用体中 的不同数据类型共享同一存储的不同数据类型共享同一存储空间空间枚举类型枚举类型 可以把变量的取值逐一

2、列出且可以用可以把变量的取值逐一列出且可以用整数或整数或 者名字来代替。者名字来代替。 结构体类型结构体类型 把关系密切但数据类型不同的把关系密切但数据类型不同的数据组数据组 合在一起合在一起C语言提供了三种用户可以自定义的数据类型:语言提供了三种用户可以自定义的数据类型:4结构结构体体类类型型会员ID号 会员姓名 会员性别会员年龄会员积分125001 John 男 23 34 125003 Rose 女 32 45 125004 Smith 男 56 38 表中数据是一个有机的整体,组合在一起才能表示一个完整表中数据是一个有机的整体,组合在一起才能表示一个完整而有意义的信息。这样的数据用基本

3、数据类型无法表示,只而有意义的信息。这样的数据用基本数据类型无法表示,只有把几种不同的基本数据类型组合在一起才行有把几种不同的基本数据类型组合在一起才行用结构体用结构体可以解决此类完整信息表示的问题。可以解决此类完整信息表示的问题。5结构体类型的定义结构体类型的定义形式为:结构体类型的定义形式为:struct 结构体名称结构体名称 数据类型数据类型 成员名成员名1; 数据类型数据类型 成员名成员名2; ;上表会员结构体定义为:上表会员结构体定义为:struct Member char ID7 ; char name10; char sex; int age; int points;;结构体中的

4、每一个数据称为一个成员。结构体中的每一个数据称为一个成员。Member结构结构体中有体中有5个成员。个成员。6结构体类型的定义阐明:阐明:1. struct1. struct是定义结构体的关键字,不能省略,由是定义结构体的关键字,不能省略,由它和后面的结构体名称一起构成了一个用户自己它和后面的结构体名称一起构成了一个用户自己定义的新的数据类型。定义的新的数据类型。2. 2. 大括号大括号 中的每一项称为结构体的一个成员,中的每一项称为结构体的一个成员,可以是已有的任意数据类型包括基本数据类型可以是已有的任意数据类型包括基本数据类型、数组和用户自定义类型)。、数组和用户自定义类型)。3. 3.

5、结构体定义完要加分号。结构体定义完要加分号。7结构体变量的定义定义好结构体后,就可以用该结构体来定义新的定义好结构体后,就可以用该结构体来定义新的变量,称为结构体变量。变量,称为结构体变量。 结构体变量的定义方式结构体变量的定义方式有三种:有三种:第一种:struct 结构体类型名 结构体变量名;例如:struct Member mem1;第三种:struct 数据类型 成员1; 数据类型 成员2;结构体变量表列;一般不推荐使用这种定义方式第二种:struct 结构体类型名 数据类型 成员1; 数据类型 成员2;结构体变量表列;例如:例如:struct Member int ID ; char

6、 name10; char sex; int age; int points; mem1, mem2;8结构体变量的使用成员的访问成员的访问变量名变量名.成员名成员名 .称为成员运算符称为成员运算符对成员的赋值与普通变量的赋值是一样的。对成员的赋值与普通变量的赋值是一样的。如:如:mem1.ID = 12500113;结构体变量的初始化结构体变量的初始化struct Member mem1 = 12500113, “John”, M, 26, 30;结构体变量的整体赋值结构体变量的整体赋值结构体变量结构体变量1 = 结构体变量结构体变量2mem2 = mem1;9typedef的使用typed

7、ef声明,简称声明,简称typedef,它的作用是为数据类型定,它的作用是为数据类型定义一个新的名字。义一个新的名字。typedef的用法是:的用法是:typedef 数据类型名数据类型名 用户自定义名称用户自定义名称例:例:typedef int integer;这个声明为这个声明为int取了一个新的名字叫取了一个新的名字叫integer,在进行了这,在进行了这个声明后可以用个声明后可以用integer来定义变量。如:来定义变量。如:integer a;这;这个定义与个定义与 int a;是等价的。是等价的。10结构的嵌套当结构体成员由更小的数据项构成时,就形成了当结构体成员由更小的数据项构

8、成时,就形成了结构体的嵌套。结构体的嵌套。例如:例如:日期结构体为:日期结构体为:struct Date int year; int month; int day;在会员结构体中增加了出生在会员结构体中增加了出生日期后,结构就变为:日期后,结构就变为:struct Member char ID7; char name10; char sex; struct Date birthday; int age; int points;11结构体数组同种结构数据的集合即结构体数组同种结构数据的集合即结构体数组struct Member int ID ; char name10; char sex; in

9、t age; int points; mem10; 对数组元素的访问方式为:对数组元素的访问方式为:memi.ID12结构体数据作为函数参数 结构变量可以作为函数的参数来传递,函数的返回值也可以是结构变量。用结构体变量成员作为函数的参数用结构体变量作为函数的参数用结构体数组作为函数的参数13共用体共用体类类型型在一些情况下,结构体中的成员不需要同时出现,使用结构在一些情况下,结构体中的成员不需要同时出现,使用结构体会造成空间的浪费,共用体可以解决此问题。体会造成空间的浪费,共用体可以解决此问题。共用体类型的定义与结构体类型的定义很相似,只不过修饰共用体类型的定义与结构体类型的

10、定义很相似,只不过修饰符不是符不是struct,而是,而是union。例如:例如:union Grade char vip; int gen; mem_grade;共用体变量的引用方式与结构体变量一样,都是通过成员运共用体变量的引用方式与结构体变量一样,都是通过成员运算符来引用的。算符来引用的。14共用体的存储空间共用体共用体Grade占用空间示意:占用空间示意:所有成员共用同一段存储空间,该空间按占用存所有成员共用同一段存储空间,该空间按占用存储区最大的成员来分配。储区最大的成员来分配。15结构体与共用体所占空间比较有如下定义的结构体:有如下定义的结构体:struct Number shor

11、t a; float b;char c;num;占用空间为:占用空间为:结构体占用空间是所有成员占用空间之和。结构体占用空间是所有成员占用空间之和。16枚枚举类举类型型在实际中,有的变量取值情况可能只有几种,把在实际中,有的变量取值情况可能只有几种,把这些可能的取值情况列举出来,就构成了一种新这些可能的取值情况列举出来,就构成了一种新的数据类型的数据类型枚举。枚举。枚举类型的定义形式为:枚举类型的定义形式为:enum 类型名类型名 枚举常量枚举常量1,枚举常量,枚举常量2, ;每个枚举常量都有一个值,若不特别说明,则第每个枚举常量都有一个值,若不特别说明,则第一个枚举常量的值为一个枚举常量的值

12、为0,也可以在定义的时候指定,也可以在定义的时候指定。其他枚举常量的值从第一个枚举常量开始逐个。其他枚举常量的值从第一个枚举常量开始逐个增增117枚举类型的使用如定义一个颜色的枚举类型:如定义一个颜色的枚举类型:enum color red=1, yellow, blue, white, black, green, orange;enum color yanse;阐明:阐明:1.enum是定义的关键字是定义的关键字2.给变量给变量yanse赋值时,赋值形式为:赋值时,赋值形式为:yanse = yellow; 3.枚举常量的值分别为枚举常量的值分别为1,2,3,4,5,6,7,若要改变可自己,

13、若要改变可自己定义定义如如enum color red=1, yellow, blue, white=6, black, green, orange; 经过这样定义后,枚举常量的值就变经过这样定义后,枚举常量的值就变成了成了1,2,3,6,7,8,918以下结构体的定义语句中,正确的选项是以下结构体的定义语句中,正确的选项是 。 A Astruct student int num; char name10;int age;stu;struct student int num; char name10;int age;stu;B. struct int num; char name10;int

14、age; student; struct B. struct int num; char name10;int age; student; struct student stu;student stu;C. struct student int num; char name10;int age; stu;C. struct student int num; char name10;int age; stu;D. struct student int num; char name10; int age; student D. struct student int num; char name10

15、; int age; student stu; stu; 有如下定义的枚举类型:有如下定义的枚举类型:enum week_dayWed=3, Thu, Fri, Sat, Sun, Mon, Tue everyday;enum week_dayWed=3, Thu, Fri, Sat, Sun, Mon, Tue everyday;那么,那么,MonMon的值为的值为 。 A A1 B. 2 C. 8 D. 5 1 B. 2 C. 8 D. 5 共用体变量在程序运行过程中共用体变量在程序运行过程中( )( )。A.A.只有一个成员占用内存空间只有一个成员占用内存空间 B. B.所有成员都占用内存空间所有成员都占用内存空间C.C.没有成员占用内存空间没有成员占用内存空间 19有如下程序段,执行后的输出结果是有如下程序段,执行后的输出结果是 。#include main()() structaint x; int y; num2=20,5,6,7;printf(%dn,num0.x/num0.y*num1.y);A. 0 B. 28 C. 20 D. 5 typedef的作用是的作用是( )。A .用来定义一个新的数据类型用来

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论