C语言chap7 用户定制数据类型.ppt

  1. 1、本文档共137页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言chap7 用户定制数据类型

第七章用户定制数据类型;int、char、float、double等都是系统预定义的标准数据类型。程序员用这些类型声明符声明需要的变量,系统就会为它们分配相应的存储空间,按特定的存储方式进行存储,并在有关运算符作用于这些数据时进行合法性检查。 除此之外,C语言还允许程序员在一定的框架范围内定制需要的数据类型。声明了类型之后,程序员就可以使用它们来定义需要的变量,如同使用系统提供的int、char、float、double等一样。 C语言允许程序员定制的数据类型是在下面的5种类型框架内进行。这5种框架分别是: · 结构体(struct):也称集合数据类型,用于将不同类型的数据组织在一个名字下。 · 位域(bit field):结构体的一种变形,允许方便地访问字(word)中的位(bit)。 · 共用体(union):允许一个存储空间中存储不同类型的变量。 · 枚举(enumeration):用一组符号代替一组整数。 · typedef:用于为已经存在的类型定义新名字。 本章介绍这些有关知识和方法。;7.1 结构体类型基础;2. 结构体类型的定制 定制结构体类型,需要定义该结构体类型的名字以及声明组成结构体的各成员,因此它是由声明成员的一组语句组成的,形式为 ;例如上述处理学籍的结构体类型定制语句为:;truct Addr { char name[30]; /* 姓名 */ char street[40]; /* 街道 */ char city[20]; /* 城市 */ char provn[20]; /* 省名 */ unsigned int zip; /* 邮编 */ };说明: (1)结构体类型并非只有一种,而可以有千千万万种,这是与基本类型不同的。如果说i为整型变量,那是很明确的,它占2个字节,按定点形式存放,而说x是结构体类型变量,那就不明确了,它由哪些数据项组成,占多少字节?因此光讲“结构体类型”,只是一个笼统的类型,它只表示了“由若干不同类型数据项组成的复合类型”,程序中定义和使用的应该是具体的有确定含义的结构体类型,需要程序员自己定制。 (2)一个结构体类型的标志由两个单词组成:第一个单词为关键字struct,它表明该类型是一种结构体类型;第二个单词是结构体名,如前面介绍的Student、Add,也称为“标记”或“符标”(flag),由程序设计者按标识符规则指定。这二者联合起来组成一个“类型标识符”即“类型名”。;(3)结构体的类型的含义由一些声明组成,它们定义了各成员(或称域)的类型。要注意,它们并不是变量,而是一个结构体类型中的成员,age,sex,num不能称为变量名,而是结构体类型struct person的成员名。在一个函数中,可以另外定义与结构体类型的成员相同名的变量,它们代表不同的对象。例如: ;(4)声明一个结构体类型,并不意味着系统将分配一段内存单元来存放各数据项成员。请注意这是声明类型而不是定义变量,声明一个类型只是表示这个类型的结构,即告诉系统它由哪些类型的成员构成,各占多少个字节,各按什么形式存储,并把它们当作一个整体来处理。应当明确,只声明类型是不分配内存单元的,例如系统声明了int,float等类型,但并不具体分配内存单元,它只反映一种数据属性,是对具体数据的“抽象”。正如同说“汽车是车”,车就是一种“抽象”,世界上只有具体的汽车、自行车、卡车、…,把“有轮子的、在地上走动的、有一定运载能力的”特征抽象为“车”。人们只有拥有具体的汽车或自行车…,才算拥有该财产。同样,一种类型只表明一种特征,如果以后定义变量为该类型,该变量应当具备这种特征,只有在定义变量以后,才占据存储单元。 (5)系统没有预先声明结构体类型,凡需使用结构体类型数据的,都必须在程序中自己定义。;7.1.2定义结构体类型变量及对变量的初始化 定制一个结构体类型后,得到一个结构体类型名。有了这个类型名,就可以像int、char、float和double一样,用来定义一些结构体类型的变量。定义了变量,系统就会为变量分配存储空间。 1. 定义结构体变量 可以采用不同的方法定义一个结构体类型的变量。 (1)在定义了一个结构体类型之后,把变量定义为该类型。如有以下声明:;Student stdnt1, stdnt2, stdnt3; /* 缺少关键字st

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档