分类: C/C++
2009-03-11 13:01:17
从写这个系列文章的念头诞生起至文章的真正完成持续了将近半年的时间,这半年来我从大三变为了大四,期间经历了各种考试以及刚刚结束的应聘,这段时间内我学习了很多东西,这些知识或多或少显式隐式地对我在C语言和指针的理解上有所帮助。而且我发现写东西可以提到自己的水平,在写《指针导学》的过程中,我感觉到自己对这些知识的理解也在不断加深。
文章写就后,在我回顾这些内容时,发现指针作为C语言的一种机制真的几乎成了C的中枢神经,原因就在于指针这种变量存储的是地址,这一下便使它变得“八面玲珑”了,指针几乎可以和C中的任何机制建立关系,所以如果想学好指针势必也要对其他语言特性有较为清晰的了解,这样才能融会贯通。当然这只是我的一点儿个人理解,希望能与大家互相沟通、交流。
另外,我发现在C++中C语言的那部分知识几乎完全适用(只有细微差别),所以如果想在C++上有所建树,我觉得把C语言的部分搞清楚将会对你理解C++有十分显著的帮助,这样你才有时间和精力去关注有关面向对象、泛型编程、设计模式这类上层应用或者说是思想,而不至于去为那些本应该已经了然于胸的基础知识费尽心神。还有,不要认为在C++中就会少了指针的应用,在C++面向对象的程序设计中你几乎逃不出指针的“魔爪”,即便有诸位C++大师建议应广泛使用标准库而避免使用指针,但实际上真的很难做到。学好指针还会对你理解迭代器的概念有莫大帮助。
最后,对于初学C的朋友们我斗胆向你们推荐几本C语言学习的经典著作,这些经典大家应时常翻阅,每一次开卷你都会有新的领悟。还有,请大家注意:技术方面的书籍一定要看经典著作,否则你将会浪费大量的时间并可能被引入歧途。我只推荐5本书并用简短的语言对其进行描述,介绍的顺序和你将要安排的阅读顺序应该不会有太大出入:
1.《C程序设计语言》(The C Programming Language)
作者:Brian W. Kernighan & Dennis M. Ritchie
此书是由C语言的设计者Brian W. Kernighan和Dennis M. Ritchie编写的一部介绍标准C语言及其程序设计方法的权威性著作,全面、系统地讲述了C语言的各个特性及程序设计的基本方法。此书的权威性毋庸置疑,市面上很多书籍在编写时都会参考这部“圣经”,换句话说,如果没有这本书就没有我们看到的种种C语言教程。读这本书要有耐心,要多读几遍,理解C程序设计的思想。书中的练习题是掌握一门新语言特性的不二法门,一定要认真对待,配套的习题解答在市面上也能轻松找到。
2.《C陷阱与缺陷》(C Traps and Pitfalls)
作者:Andrew Koenig
这本书不教你如何用C语言编程,也非C语言的百科全书供你查阅,它所讲述的是帮助你绕过C语言编程过程中的“陷阱”和障碍。这本书所揭示的知识,至少能够帮助你减少C代码和初级C++代码中90%的bug。书中还有对应每章所讲内容的习题,认真对待每一道题并对照答案仔细研究可以让你更轻巧地绕过“陷阱”。
3.《C专家编程》(Expert C Programming)
作者:Peter Van Der Linden
这是一本成为C专家路上的必读之书,作者通过幽默轻松的叙述带你领略某些C语言特性的底层机制和高级使用技巧,并阐释了一些特性的形成原因,使你知其然并知其所以然。书中对一些在使用中容易出错的问题进行了提点,在最后一章作者用简练精辟的阐述介绍了C++的基本特征。另外,书中还设置了“小启发”栏目,其中出现的是在实际工作中的经验和指导方针以供你在编程中应用。在附录部分有一个程序员面试秘密的介绍,此中的面试题至今还是各大公司所青睐的,对你学习语言以及求职都会有极大帮助。《C专家编程》的阅读难度较《C陷阱与缺陷》要高,大家可不要只读了轻松的故事而丢了主干内容,多读几遍并深入思考才能理解其中奥妙。
4.《C和指针》(Pointers on C)
作者:Kenneth A. Reek
此书的名字就体现了立意,不同于市面上许多只用一章篇幅专门讲述指针的书籍,作者将指针作为本书的线索并贯穿于其他C语言特性的讲解中,讲述了指针在各种不同上下文环境中的有效用法,而且在讲解的深度上让人大呼过瘾。在看完前三本著作之后,通过此书来回顾所学的内容时,你可能还会看到前所未见的知识和技巧,这就是《C和指针》的魅力,此外书中还阐述了关于诸如编程效率和程序可维护性的问题。
5.《C语言参考手册》(C: A Reference Manual)
作者:Samuel P. Harbison & Guy L. Steele
这本书是C语言的一本权威参考手册,全书分为两大部分:第一部分讨论了C语言的所有语言特征;第二部分讨论了C语言的标准库,并针对它们不同的功能分别进行详细介绍。此书在讨论C语言及标准库的细节时,提供了许多实例和解释,以便于读者了解相关概念。第一部分的各章还提供了练习题和主要练习的解答,这些练习可帮助读者加深理解C语言的基本功能和特性。我觉得这本书对C语言的描述比其他任何书籍都更加清晰和详细,更重要的是,作者的语言十分简练,绝无冗余。如果想精通C语言,这本书是必读的。如果你在学习C或者是一个C语言的开发人员,你的案头绝对应该摆放这本书,即使你是一个C++程序员,我也建议你买上一本,因为如果对C的知识和技巧成竹在胸的话,将非常有助于你成为一名优秀的C++程序员。
给大家一个建议:在书籍的选择上应该趋向于较新的版本,因为新版图书往往包含以前的全部知识要点,而且涵盖了最新的技术特性,这些新技术我们可能并不会全都用到,但当我们真的需要用到并去查询资料时,你可能会因为选择了一个正确的版本而节省大量的时间。
书籍介绍完了,但大家千万不要陷入死读书的深渊中,学好程序设计一定要理论与实际相联合,多动手,勤思考才会有好的效果。在此,祝愿所有学习程序设计的朋友在这条道路上都能取得令你自己、关注你的人和你关注的人皆满意的成就。