(九)字符串和字符 -- 3. 字符串作为抽象数据类型

3. 字符串作为抽象数据类型

3.1 分层抽象

  • 分层抽象(layered abstraction) :建立在不同层次结构上的抽象。

用来表示字符串的分层抽象结构,如下图所示:

完成输入输出的硬件设备自动在ASCII代码和屏幕或键盘上的符号之间进行转换:

计算机对表示字符的整数代码应用算术运算可以处理每个字符。
这些功能组成了可用于字符串的机器级的操作,形成层次结构中的最低一层。

在由硬件提供的基本功能的上面,程序设计语言通常也包括一些对字符串操作的支持。可用于字符串的内嵌操作形成了层次结构中的第二层。

在许多语言中,这些功能是非常强大的,可以直接在语言级完成复杂的字符串操作。
然而,ANSIC在语言本身几乎没有提供任何对字符串的支持。
仅有的支持是提供定义字符串常量功能,所有其他的字符串操作都是由库提供的。

在ANSI C中,可用的大多数字符串操作是由string.h接口提供的。
然而,某些常用的操作用string.h接口难以完成。

为了能用概念上较简单的模型处理字符串,本书引入了另一个字符串库,它可以通过strlib.h接口访问。

#include "strlib.h"

3.2 抽象类型的概念

strlib.h接口的主要优势在于它能使字符串作为抽象类型来处理。
目前可以把抽象类型(abstract type) 想象为按照它的行为而不是按照它的表示定义的类型。

抽象类型的行为是由能在这种类型的对象上实施的操作来定义的。

特定抽象类型的合法操作被称为它的基本操作(primitive operation),被定义为与该类型相关的接口中的函数。





参考
《C语言的科学和艺术》 —— 第9章 字符串和字符

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值