在本章中您将学习下列内容:
● 用C表示多种数据类型。
● 新的算法,以及增强您从概念上开发程序的能力。
● 抽象数据类型(Abstract data type, ADT)。
● 函数:
进一步学习malloc()。

在某种程度上,学习一门计算机语言和学习音乐、木工或工程技术是一样的。首先,您要学会使用行业工具。要学会演奏各个音阶;要了解锤子的哪一端是用来握的,哪一端是要小心的;要能解决涉及降落、滑坡以及平衡物体之类的不计其数的问题。到现在为止,您一直在学习和实践各种技能,比如创建变量、结构、函数等。但是,最后您将提高到一个更高的层次。在这个层次上,使用工具是次要的,真正的挑战是设计和创建一个工程。您将学会将工程视为一个整体。本章将重点放在这个更高的层次上。本章中涉及的内容可能比前些章中的内容略微难一些,但是您会发现它更有价值,因为它将帮助您从初学者成长为熟练的程序员。

我们将从研究程序设计的关键部分,即程序表示数据的方式入手。通常程序开发的最重要部分是找到针对程序中所使用的数据的较好的表示方法。正确地表示数据能够使得程序其余部分的编写变得简单。到目前为止,您已经了解C的内建数据类型:简单变量、数组、指针、结构以及联合。

但是,寻找正确的数据表示方式常常不仅仅是选择一种数据类型。还必须考虑到哪些操作是必须的。也就是说,必须确定如何存储数据,并且必须定义对数据类型来说哪些操作是有效的。例如,C实现通常将C的int类型和指针类型都存储为整数,但是这两种类型有不同的有效操作集。比如,可以将一个整数与另一个整数相乘,但是不能将一个指针和另一个指针相乘。可以用*运算符来对一个指针取值,但是这个运算对整数来说是无意义的。C语言为其基本类型定义了有效操作。但是,当您设计了一个方案来表示数据时,您可能需要自己来定义有效操作。在C中,可以通过把所需的操作编写为函数来做到这一点。简而言之,设计数据类型包括确定如何存储数据以及设计一系列函数来管理数据。

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元

您还将看到一些算法(algorithm),即操纵数据的方法。作为一个程序员,您应该掌握这些可以反复应用于类似问题的处理方法。

本章探究设计数据类型的过程,这是一个将算法和数据表示方法相匹配的过程。在这个过程中,您将遇到一些常见的数据形式,比如队列、列表、以及二叉搜索树。

本章还将介绍抽象数据类型(Abstract Data Type,ADT)的概念。ADT以一种面向问题而不是面向语言的方式把解决问题的方法和数据表示结合在一起。设计了一个ADT之后,您就可以在不同的环境中重用它。对ADT的理解将为您学习面向对象的程序设计(OOP)以及C++做好概念上的准备。