基本信息
- 原书名:Pointers on C
- 原出版社: Addison-Wesley; 1 edition
【插图】

编辑推荐
1.C语言经典著作
2.凸显指针对C语言的重要性
3.提供宝贵的提示和智慧的警告
内容简介
作译者
Reek是罗彻斯特理工大学计算机科学教授。他是一位经验丰富的C程序员,曾为多家公司担任过技术顾问。他讲授的课程有操作系统、数据通信、计算机网络、形式语言、算法分析和交换系统等。本书正是基于他9年的编程及教学的经验积累。
目录
Chapter 1: A Quick Start
1.1 Introduction
1.2 Other Capabilities
1.3 Compiling
1.4 Summary
1.5 Summary of Cautions
1.6 Summary of Programming Tips
1.7 Questions
1.8 Programming Exercises
Chapter 2: Basic Concepts
2.1 Environments
2.2 Lexical Rules
2.3 Program Style
2.4 Summary
2.5 Summary of Cautions
2.6 Summary of Programming Tips
2.7 Questions
2.8 Programming Exercises
Chapter 3: Data
前言
市面上已经有了许多优秀的讲述C语言的书籍,为什么我们还需要这一本呢?我在大学里教授C语言编程已有10个年头,但至今尚未发现一本书是按照我所喜欢的方式来讲述指针的。许多书籍用一章的篇幅专门讲述指针,而且这一章往往出现在全书的后半部分。但是,仅仅描述指针的语法、并用一些简单的例子展示其用法是远远不够的。我在授课时,很早便开始讲授指针,而且在以后的授课过程中也经常讨论指针。我描述它们在各种不同的上下文环境中的有效用法,展示使用指针的编程惯用法(programming idiom)。我还讨论了一些相关的课题如编程效率和程序可维护性之间的权衡。指针是本书的线索所在,融会贯通于全书之中。
指针为什么如此重要?我的信念是:正是指针使C威力无穷。有些任务用其他语言也可以实现,但C能够更有效地实现;有些任务无法用其他语言实现,如直接访问硬件,但C却可以。要想成为一名优秀的C程序员,对指针有一个深入而完整的理解是先决条件。
然而,指针虽然很强大,与之相伴的风险却也不小。跟指甲锉相比,链锯可以更快地切割木材,但链锯更容易使你受伤,而且伤害常常来得极快,后果也非常严重。指针就像链锯一样,如果使用得当,它们可以简化算法的实现,并使其更富效率:如果使用不当,它们就会引起错误,导致细微而令人困惑的症状,并且极难发现原因。对指针只是略知一二便放手使用是件非常危险的事。如果那样的话,它给你带来的总是痛苦而不是欢乐。本书提供了你所需要的深入而完整的关于指针的知识,足以使你避开指针可能带来的痛苦。
为什么要学习C语言
为什么C语言依然如此流行?历史上,由于种种原因,业界选择了C,其中最主要的原因就在于它的效率。优秀C程序的效率几乎和汇编语言程序一样高,但C程序明显比汇编语言程序更易于开发。和许多其他语言相比,c给予程序员更多的控制权,如控制数据的存储位置和初始化过程等。C缺乏“安全网”特性,这虽有助于提高它的效率,但也增加了出错的可能性。例如,C对数组下标引用和指针访问并不进行有效性检查,这可以节省时间,但你在使用这些特性时就必须特别小心。如果你在使用C语言时能够严格遵守相关规定,就可以避免这些潜在的问题。
C提供了丰富的操作符集合,它们可以让程序员有效地执行一些底层的计算如移位和屏蔽等,而不必求助汇编语言。C的这个特点使很多人把C称为“高层”的汇编语言。但是,当需要的时候,C程序可以很方便地提供汇编语言的接口。这些特性使C成为实现操作系统和嵌入性控制器软件的良好选择。
C流行的另一个原因是由于它的普遍存在。C编译器在许多机器上实现。另外,ANSI标准提高了C程序在不同机器之间的可移植性。
最后,C是C++的基础。C++提供了一种和C不同的程序设计和实现的观点。然而,如果你对C的知识和技巧,如指针和标准库等成竹在胸,将非常有助于你成为一名优秀的C++程序员。
为什么应该阅度这本书
本书并不是一本关于编程的入门图书。它所面向的读者应该已经具备了一些编程经验,或者是一些想学习C,但又不想被诸如为什么循环很重要以及何时需要使用汀语句等肤浅问题耽误进程的人。
另一方面,我并不要求本书的读者以前学习过C。我讲述了C语言所有方面的内容。这种内容的广泛覆盖性使本书不仅适用于学生,也适用于专业人员。也就是说,适用于首次学习C的读者和那些经验更丰富的希望进一步提高语言使用技巧的用户。
优秀的C++书籍把精力集中于与面向对象模型有关的主题上(如类的设计)而不是专注于基本的C技巧,这样做是对的。但C++是建立在C的基础之上的,C的基本技巧依然非常重要,特别是那些能够实现可复用类的技巧。诚然,C++程序员在阅读本书时可以跳过一些他们所熟悉的内容,但他们会在本书中找到许多有用的C工具和技巧。
本书的组织形式
本书按照教程的形式组织,它所面向的读者是先前具有编程经验的人。它的编写风格类似于导师在你的身后注视着你的工作,不时给你一些提示和忠告。我的目标是把通常需要多年实践才能获得的知识和观点传授给读者。这种组织形式也影响到材料的顺序——我通常在一个地方引入一个话题,并进行完整的讲解。因此,本书也可以当做参考手册。
在这种组织形式中,存在两个显著的例外之处。首先是指针,它贯穿全书,将在许多不同的上下文环境中进行讨论。其次就是第1章,它对语言的基础知识提供了一个快速的介绍。这种介绍有助于你很快掌握编写简单程序的技巧。第1章所涉及的主题将在后续章节中深入讲解。
较之其他书籍,本书在许多领域着墨更多,主要是为了让每个主题更具深度,向读者传授通常只有实践才能获得的经验。另外,我使用了一些在现实编程中不太常见的例子,虽然有些不太容易理解,但这些例子显示了C在某些方面的趣味所在。
ANSI C
本书描述ANSIC,是由ANSI/IS09899—1990[ANSI 90]进行定义并由[KERN 89]进行描述的。我之所以选择这个版本的C是基于两个原因:首先,它是旧式C(有时称做Kemighan和Ritchie[KERN 78],或称K&RC)的后继者,并已在根本上取代了后者;其次,ANSIC是C++的基础。本书中的所有例子都是用ANSI C编写的。我常常把“ANSI C标准文档”简称为“标准”。
媒体评论
——Francis Glassborow,ACCU主席
本书提供与C语言编程相关的全面资源和深入讨论,通过对指针的基础知识和高级特性的探讨,帮助程序员把指针的强大功能融入到自己的程序中去。
——编辑推荐
之前已经买过《C陷阱与缺陷》以及《C专家编程》,这次专门是为了凑齐C语言三大利器而买的。最终本书一点也没让我失望!作者对指针的讲解深入透彻,有一些我一直没能完全弄明白的概念都在本书中找到了答案。
——亚马逊中国读者“琴”
这本书讲得比较详细,而且对编程时经常会犯的错误以及常用的编程方法会举出例子来,对于初学者或者想进一步加深对C语言理解的人都有一定的参考价值。
——亚马逊中国读者“水嘱愚”
指针介绍得很详细,有一定的深度!一个程序,有多个版本,你会从不同的版本体会到这本书的独到之处。
——亚马逊中国读者“88zhangzhisheng”