C和指针 (08年度畅销榜TOP50)
基本信息
- 原书名: Pointers on C
- 原出版社: Addison Wesley
编辑推荐
凸现指针对C的重要性.
提供宝贵的提示和智慧的警告...
推荐阅读
内容简介回到顶部↑
本书提供与c语言编程相关的全面资源和深入讨论。本书通过对指针的基础知识和高级特性的探讨,帮助程序员把指针的强大功能融入到自己的程序中去。
全书共18章,覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、结构和联合等几乎所有重要的c编程话题。书中给出了很多编程技巧和提示,每章后面有针对性很强的练习,附录部分则给出了部分练习的解答。
本书适合c语言初学者和初级c程序员阅读,也可作为计算机专业学生学习c语言的参考。
全书共18章,覆盖了数据、语句、操作符和表达式、指针、函数、数组、字符串、结构和联合等几乎所有重要的c编程话题。书中给出了很多编程技巧和提示,每章后面有针对性很强的练习,附录部分则给出了部分练习的解答。
本书适合c语言初学者和初级c程序员阅读,也可作为计算机专业学生学习c语言的参考。
目录回到顶部↑
第1章 快速上手
1.1 简介
1.1.1 空白和注释
1.1.2 预处理指令
1.1.3 main函数
1.1.4 read_column_numbers函数
1.1.5 rearrange函数
1.2 补充说明
1.3 编译
1.4 总结
1.5 警告的总结
1.6 编程提示的总结
1.7 问题
1.8 编程练习
第2章 基本概念
2.1 环境
2.1.1 翻译
2.1.2 执行
2.2 词法规则
2.2.1 字符
1.1 简介
1.1.1 空白和注释
1.1.2 预处理指令
1.1.3 main函数
1.1.4 read_column_numbers函数
1.1.5 rearrange函数
1.2 补充说明
1.3 编译
1.4 总结
1.5 警告的总结
1.6 编程提示的总结
1.7 问题
1.8 编程练习
第2章 基本概念
2.1 环境
2.1.1 翻译
2.1.2 执行
2.2 词法规则
2.2.1 字符
前言回到顶部↑
为什么需要这本书.
市面上已经有了许多优秀的讲述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,但又不想被诸如为什么循环很重要以及何时需要使用if语句等肤浅问题耽误进程的人。
另一方面,我并不要求本书的读者以前学习过C。我讲述了C语言所有方面的内容。这种内容的广泛覆盖性使本书不仅适用于学生,也适用于专业人员。也就是说,适用于首次学习C的读者和那些经验更丰富的希望进一步提高语言使用技巧的用户。
优秀的C++书籍把精力集中于与面向对象模型有关的课题上(如类的设计)而不是专注于基本的C技巧,这样做是对的。但C++是建立在C的基础之上的,C的基本技巧依然非常重要,特别是那些能够实现可复用类的技巧。诚然,C++程序员在阅读本书时可以跳过一些他们所熟悉的内容,但他们会在本书中找到许多有用的C工具和技巧。
本书的组织形式
本书按照教程的形式组织,它所面向的读者是先前具有编程经验的人。它的编写风格类似于导师在你的身后注视着你的工作,不时给你一些提示和忠告。我的目标是把通常需要多年实践才能获得的知识和观点传授给读者。这种组织形式也影响到材料的顺序——我通常在一个地方引入一个话题,并进行完整的讲解。因此,本书也可以当做参考手册。
在这种组织形式中,存在两个显著的例外之处。首先是指针,它贯穿全书,将在许多不同的上下文环境中进行讨论。 其次就是第1章,它对语言的基础知识提供了一个快速的介绍。这种介绍有助于你很快掌握编写简单程序的技巧。第1章所涉及的主题将在后续章节中深入讲解。
较之其他书籍,本书在许多领域着墨更多,主要是为了让每个主题更具深度,向读者传授通常只有实践才能获得的经验。另外,我使用了一些在现实编程中不太常见的例子,虽然有些不太容易理解,但这些例子显示了C在某些方面的趣味所在。
ANSI C
本书描述ANSI C,是由ANSI/ISO 9899-1990[ANSI 90]进行定义并由[KERN 89]进行描述的。我之所以选择这个版本的C是基于两个原因:首先,它是旧式C(有时称做Kernighan和Ritchie[KERN 78],或称K&R C)的后继者,并已在根本上取代了后者;其次,ANSI C是C++的基础。本书中的所有例子都是用ANSI C编写的。我常常把“ANSI C标准文档”简称为“标准”。
排版说明
市面上已经有了许多优秀的讲述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,但又不想被诸如为什么循环很重要以及何时需要使用if语句等肤浅问题耽误进程的人。
另一方面,我并不要求本书的读者以前学习过C。我讲述了C语言所有方面的内容。这种内容的广泛覆盖性使本书不仅适用于学生,也适用于专业人员。也就是说,适用于首次学习C的读者和那些经验更丰富的希望进一步提高语言使用技巧的用户。
优秀的C++书籍把精力集中于与面向对象模型有关的课题上(如类的设计)而不是专注于基本的C技巧,这样做是对的。但C++是建立在C的基础之上的,C的基本技巧依然非常重要,特别是那些能够实现可复用类的技巧。诚然,C++程序员在阅读本书时可以跳过一些他们所熟悉的内容,但他们会在本书中找到许多有用的C工具和技巧。
本书的组织形式
本书按照教程的形式组织,它所面向的读者是先前具有编程经验的人。它的编写风格类似于导师在你的身后注视着你的工作,不时给你一些提示和忠告。我的目标是把通常需要多年实践才能获得的知识和观点传授给读者。这种组织形式也影响到材料的顺序——我通常在一个地方引入一个话题,并进行完整的讲解。因此,本书也可以当做参考手册。
在这种组织形式中,存在两个显著的例外之处。首先是指针,它贯穿全书,将在许多不同的上下文环境中进行讨论。 其次就是第1章,它对语言的基础知识提供了一个快速的介绍。这种介绍有助于你很快掌握编写简单程序的技巧。第1章所涉及的主题将在后续章节中深入讲解。
较之其他书籍,本书在许多领域着墨更多,主要是为了让每个主题更具深度,向读者传授通常只有实践才能获得的经验。另外,我使用了一些在现实编程中不太常见的例子,虽然有些不太容易理解,但这些例子显示了C在某些方面的趣味所在。
ANSI C
本书描述ANSI C,是由ANSI/ISO 9899-1990[ANSI 90]进行定义并由[KERN 89]进行描述的。我之所以选择这个版本的C是基于两个原因:首先,它是旧式C(有时称做Kernighan和Ritchie[KERN 78],或称K&R C)的后继者,并已在根本上取代了后者;其次,ANSI C是C++的基础。本书中的所有例子都是用ANSI C编写的。我常常把“ANSI C标准文档”简称为“标准”。
排版说明
媒体评论回到顶部↑
本书提供与C语言编程相关的全面资源和深入讨论,通过对指针的基础知识和高级特性的探讨,帮助程序员把指针的强大功能融入到自己的程序中去。.
我竭尽全力地推荐这本我所见过的最好的C编程入门图书。作者深知读者所需,并为他们打下良好基础。如果你已经开始学习C语言但始终不得要领,不妨试一试这本书。
——Francis Glassborow, ACCU主席 ...
我竭尽全力地推荐这本我所见过的最好的C编程入门图书。作者深知读者所需,并为他们打下良好基础。如果你已经开始学习C语言但始终不得要领,不妨试一试这本书。
——Francis Glassborow, ACCU主席 ...
相关资源回到顶部↑
· 【推荐】众多高校学子口口相传,他们共同的选择--华清远见嵌入式学院(嵌入式Linux就业课程、3G手机开发就业课程,通过入学测试即签100%就业协议,4个月集中实训,世界500强企业成功就业保障!!!)· 【亚嵌教育 嵌入式培训专家】(嵌入式培训,嵌入式Linux培训,ARM培训,Linux培训,3G培训,Android培训,WINCE培训,DSP培训,FPGA培训,嵌入式就业培训)
· 程序员的7种武器(正则表达式、编程语言、数据库、算法、软件调试、开发环境)
· C/C++ 经典著作(《C专家编程》《C++ Templates中文版》《C和指针 》《C陷阱与缺陷》《C++沉思录》)
评论交流
共有135人开贴评论 152人参与评论 115人参与打分 查看
评价等级:







发表于:2010-3-12 9:07:00
感觉非常好,能帮你总结一些需要大量经验积累才能觉察到的问题,即使你看过《C专家编程》,那么这本书也十分值得你去仔细品味。对于技术领域层出不穷的书籍,不论再怎么优秀,只有那些内容主线覆盖相互正交的方面的好书才是相当值得购买、阅读和收藏的。Kenneth A. Reek 的这本著作是C世界中的这样一个活生生的例子。如果你仅仅把这本著作当作类似 Stephen Prata 的 C Primer Plus 之类的C入门书籍来看待,那就大错特错了。
这本书适合于各阶层C/C++语言使用者阅读的一本读物. 从基础概念,到类型,数据结构以及一些容易让初学者犯错的地方讲解的十分细致,但又不带丁点学究气味,给人带来十分清新的阅读享受. 更将指针这一让人挠头的概念,用以简洁准确的文字,配合贴切的图示,讲解的让人容易得其要领. 值得每一位不光是C系程序员,爱好者,一读再读的。把C语言的每一个地方都解释得很清楚,很不错,而且后面有一些数据结构的讲解,C语言最强大的地方就是指针,这本书可以使你更透彻地理解C语言。
这本书适合于各阶层C/C++语言使用者阅读的一本读物. 从基础概念,到类型,数据结构以及一些容易让初学者犯错的地方讲解的十分细致,但又不带丁点学究气味,给人带来十分清新的阅读享受. 更将指针这一让人挠头的概念,用以简洁准确的文字,配合贴切的图示,讲解的让人容易得其要领. 值得每一位不光是C系程序员,爱好者,一读再读的。把C语言的每一个地方都解释得很清楚,很不错,而且后面有一些数据结构的讲解,C语言最强大的地方就是指针,这本书可以使你更透彻地理解C语言。
| 我要写评论 |
| 查看所有评论交流(共135条) |


点击看大图





加载中...
