计算机系统概论十九章.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第十九章 数据结构 19.1 介绍 C在其核心为数据的三个基本类型:整数、字符和浮点数值提供了支持。那就是说,C自然的支持这些类型的变量的分配,以及操作这些类型的运算,诸如加法+,乘法*。正如我们贯穿于本书的第二部分的主题,我们看到了为了扩展这些基本类型,包括指针和数组的需要。指针和数组都起源于这三个基本类型。指针指向这三个基本类型之一;我们可以声明int,char或double数组。 最后,虽然程序员的工作是写程序处理现实世界的对象,诸如一个机翼,或一群人,或一群迁徙的鲸,问题在于只有整数、字符和浮点数值是低层计算系统能够处理的现实。程序员必须把这些现实世界的对象映射到这些基本类型上,这点有些麻烦。但是程序设计语言可以有助于建起桥梁。为描述现实世界的对象提供的支持,以及对其指定的操作是面向对象的基础。 程序操作的是对象而不是基本类型是面向对象程序设计的基本原则。在本章,我们通过查看一个C程序如何构建一个由多个基本类型组合的类型,向面向对象前进一小步。在C中,这个集合被称为结构体。结构体为程序员提供了表示那些最适合通过多个数值表示的对象的一个便利的方法。例如,在一个公司数据库程序中,一个雇员可以被表示为一个包含姓名(字符串)、职别(字符串)和雇员ID(整数)的结构体。在设计那样的数据库程序时,我们可以使用C的结构体。 本章的主题是C对数据结构的支持。首先,我们查看如何用C构建结构体,以及一个操作一个结构体数组的简单程序。其次,我们查看C中的动态存储分配。动态分配和结构体的概念没有直接的联系,但是它是我们用于本章的第三项——链表的一个组成元素。链表是一个类似于数组的基本的(通用的)数据组织,二者都存储数据项的集合,但是在对数据项的组织上不同。我们将查看对链表内的数据项进行增加、删除和查询的函数。 19.2 结构体 有些事物通过基本类型的组合可以被更好的描述。对于那样的对象,C提供了结构体的概念。结构体允许程序员去定义一个由基本的数据项,如int,char和double,还有指向这些类型的指针,以及这些类型的数组组合而成的新类型。结构体变量被声明的方法与声明基本数据类型变量相同。然而,在任何结构体变量被声明之前,结构体内的数据项的组织和名字必须被定义。 例如,在描述一架飞机时,对于一个飞机模拟器或者一个管理芝加哥的空中交通的一个程序,我们可能想要描绘几个与手头的应用相关的飞行特征。飞机的航行号用来识别它,既然它典型情况下会是一组数字和字符,我们可以用一个字符串来表示它。飞行的高度、经纬度和方向也是有用的,我们可以把它们全部存储为整数。飞行速度是另一个重要的特征,最好用双精度浮点数来表示。下面是对于描绘一架飞行中的飞机所声明的变量: char flightNum[7]; /* 最多6个字符 */ int altitude; /* 以米为单位 */ int longitude; /* 以十分之一度为单位 */ int latitude; /* 以十分之一度为单位 */ int heading; /* 以十分之一度为单位 */ double airSpeed; /* 以千米/小时为单位 */ 如果程序要模拟多架飞机,我们需要对每一架声明一个这些变量的副本,这点是乏味的而且导致了过长的代码。C语言通过struct提供了一个把这些特征组合在一个类型中的方便方法,如下所示: struct flightType{ char flightNum[7]; /* 最多6个字符 */ int altitude; /* 以米为单位 */ int longitude; /* 以十分之一度为单位 */ int latitude; /* 以十分之一度为单位 */ int heading; /* 以十分之一度为单位 */ double airSpeed; /* 以千米/小时为单位 */ }; 在前面的声明中,我们构建了一个包含六个成员元素的新类型。我们还没有声明任何存储,我们只是向编译器说明这个新类型的组成。我们已经给了这个结构体一个标签flightType,这对于在代码的其他部分引用这个结构体是很有必要的。 我们可以用下面的语句来声明这个新类型的一个变量: struct flightType plane; 这就声明了一个叫做plane的变量,由在结构体声明中定义的6个字段组成,但是对它的处理就像任何其他的类型那样。

文档评论(0)

803322fw + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档