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

下载本文档

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

文档简介

C语言程序设计第7章自定义数据类型本章主要内容

1.自定义数据类型概念

2.结构体类型

3.共用体类型

4.枚举类型自定义数据类型自定义数据类型是指用户根据需要自己定义的,由多种基本数据类型所构成的复合数据类型。

共用体类型与结构体类似,不同之处在于共用体中的不同数据类型共享同一存储空间枚举类型可以把变量的取值逐一列出且可以用整数或者名字来代替。结构体类型把关系密切但数据类型不同的数据组合在一起C语言提供了三种用户可以自定义的数据类型:结构体类型的定义结构体类型的定义形式为:struct

结构体名称{

数据类型成员名1;数据类型成员名2;┇};上表会员结构体定义为:structMember{charID[7];charname[10];charsex;intage;intpoints;};结构体中的每一个数据称为一个成员。Member结构体中有5个成员。结构体类型的定义★说明:1.struct是定义结构体的关键字,不能省略,由它和后面的结构体名称一起构成了一个用户自己定义的新的数据类型。2.大括号{}中的每一项称为结构体的一个成员,可以是已有的任意数据类型(包括基本数据类型、数组和用户自定义类型)。3.结构体定义完要加分号。结构体变量的定义定义好结构体后,就可以用该结构体来定义新的变量,称为结构体变量。结构体变量的定义方式有三种:第一种:struct结构体类型名结构体变量名;例如:structMembermem1;第三种:struct{

数据类型成员1;数据类型成员2;┇}结构体变量表列;一般不推荐使用这种定义方式第二种:struct结构体类型名{

数据类型成员1;数据类型成员2;┇}结构体变量表列;例如:structMember{intID;charname[10];charsex;intage;intpoints;}mem1,mem2;typedef的使用typedef声明,简称typedef,它的作用是为数据类型定义一个新的名字。typedef的用法是:typedef

数据类型名用户自定义名称例:typedefintinteger;这个声明为int取了一个新的名字叫integer,在进行了这个声明后可以用integer来定义变量。如:integera;这个定义与inta;是等价的。结构的嵌套当结构体成员由更小的数据项构成时,就形成了结构体的嵌套。例如:日期结构体为:structDate{intyear;intmonth;intday;};在会员结构体中增加了出生日期后,结构就变为:structMember{charID[7];charname[10];charsex;structDatebirthday;intage;intpoints;}结构体数组同种结构数据的集合即结构体数组structMember{intID;charname[10];charsex;intage;intpoints;}mem[10];对数组元素的访问方式为:mem[i].IDmem[i].name共用体类型在一些情况下,结构体中的成员不需要同时出现,使用结构体会造成空间的浪费,共用体可以解决此问题。共用体类型的定义与结构体类型的定义很相似,只不过修饰符不是struct,而是union。例如:unionGrade{charvip;intgen;}mem_grade;共用体变量的引用方式与结构体变量一样,都是通过成员运算符来引用的。共用体的存储空间共用体Grade占用空间示意:所有成员共用同一段存储空间,该空间按占用存储区最大的成员来分配。结构体与共用体所占空间比较有如下定义的结构体:structNumber{shorta;floatb;charc;}num;占用空间为:结构体占用空间是所有成员占用空间之和。枚举类型的使用如定义一个颜色的枚举类型:enumcolor{red=1,yellow,blue,white,black,green,orange};enumcoloryanse;说明:1.enum是定义的关键字2.给变量yanse赋值时,赋值形式为:yanse=yellow;3.枚举常量的值分别为1,2,3,4,5,6,7,若要改变可自己定义如enumcolor{red=1,yellow,blue,white=6,black,green,orange};经过这样定义后,枚举常量的值就变成了1,2,3,6,7,8,9

语法练习

以下结构体的定义语句中,正确的是

。A.structstudent{intnum;charname[10];intage;};stu;B.struct{intnum;charname[10];intage;}student;structstudentstu;C.structstudent{intnum;charname[10];intage;}stu;D.structstudent{intnum;charname[10];intage;};studentstu;

有如下定义的枚举类型:enumweek_day{Wed=3,Thu,Fri,Sat,Sun,Mon,Tue}everyday;则,Mon的值为

。A.1B.2C.8D.5

共用体变量在程序运行过程中()。A.只有一个成员占用内存空间B.所有成员都占用内存空间C.没有成员占用内存空间

语法练习

有如下程序段,执行后的输出结果是

。#include

<stdio.h>main(){structa{intx;inty;}num[2]={{20,5},{6,7}};printf("%d\n",num[0].x/num[0].y*num[1].y);}A.0

温馨提示

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

评论

0/150

提交评论