国内第一本《C程序设计伴侣》

编辑的话:为何策划这本书

我第一次看谭老师的《C程序设计》,是20年前,那时我17岁,大学一年级。当时感觉这本书很神奇,对编程充满了好奇。同时也感觉这本书有些难,有些地方,比如指针,虽然看过书,也有老师讲过了,但依然感觉似懂非懂。还有些知识,书中只讲了怎么做,但没有讲为什么要这么做,比如为什么所有的C程序都要有一个main()函数呢。

就这样,带着一些无伤大雅的困惑,时光流过20年。

2011年初,我在书店无意中看到《C程序设计》已经出到了第四版。并且在书的封面上印着1100万册的销量数字,视觉效果十分震撼。我想这大约意味着有1100万人已经读过了这本书,其中想必会有一些和我一样在读书中遇到困惑的读者吧。

考虑到1100万的基数,我想遇到困惑的读者大概也不在少数。考虑到这本书几乎是所有大学新生所接触的第一本编程书,其意义和重要性非同小可。这样一想,此事未免让人放心不下。想来想去,我决定做点什么,为这些人做些什么,为这本书做些什么,从而让这本书变得更好,让它的广大读者中有困惑的那部分能减少一些困惑。

想到古典名著多有注解、译文和批注,来帮助看不懂文言文的读者更好地理解这些经典的古典名著。那么,我为什么不为《C程序设计》这本计算机的经典名著来出一本注解和批注的书呢?把原书中没有讲透彻没有讲明白的那些概念、知识和技术点来认认真真地讲讲清楚。进而又想,既然已经走到了注解和批注的地步,那就不妨再往前走得更远一些吧,把原书中遗漏的、忽视的、错误的,以及那些未曾涉及的但作为初学者或称为未来的程序员绝对应该知道的基础知识和素养一并讲讲清楚。因为,有些错误的认识会对初学者产生深远的影响。 这本书因《C程序设计》的存在而诞生,它是对《C程序设计》这本书的强有力的注解和补充。如同擎天柱和天火合体后,能够冲天高飞壮志凌云,这本书将成为《C程序设计》的强劲的喷气引擎。

在语言风格和表现形式上,这本书比《C程序设计》更加的有趣、更加的通俗易懂。在内容上,这本书比《C程序设计》更加的深刻、更加的透彻,具有更加广阔的视野和更加深厚的内涵。在实用性上,这本书比《C程序设计》更加的实战,可以让你养成良好且符合业界标准的编程习惯和编程思想,为今后的继续前行打下必要而优秀的基础。同时,由于这本书对概念、知识和疑难点讲解地非常透彻,因此,这本书也会助你轻松通过C程序设计课程的考试。

我把这本书, 命名为—— 《C程序设计伴侣》。

本书策划编辑:陈冰 2012年2月12日 

作者的话 更有趣、更容易、更深刻、更实战的《C程序设计伴侣》—— 《C程序设计》的有力补充和最佳伴侣

在中国,几乎每一个人,第一次接触程序设计,都是通过谭浩强老师的《C程序设计》开始的。从某种意义上说,它是中国万千程序员的启蒙读本。

《C程序设计》累计发行逾1100万册,不仅创计算机图书的全国最高销量纪录,在世界上也是罕见的。这本书也因此获得多项殊荣。 然而,这些成绩仍无法掩盖这样一个事实:很多通过这本书学习C语言的初学者,在学习的过程中,对书中讲解的内容感到晦涩生硬,难以理解和掌握;而在他们历尽辛苦终于掌握了一些知识之后,在要使用这些知识来解决一个实际问题时,却因情况的复杂而感到无从下手;即使是分析出了可能的切入点,又因为经验的缺乏,在具体实施时,感到困难重重。在整本书的学习过程中,充满了对C语言的各种概念、知识、规则的较生硬的讲解,而对于打基础阶段十分重要的正确的编程素养、编程思想和编程技巧,却几乎没有提及。

C语言虽然是高级语言,但却是相对更接近底层的高级语言。对于第一次接触编程的初学者而言,C语言,就像一座充满魔法的强大而庄严的森林,没有广阔的视野,没有高空的俯视,没有称手的地图。直接的贸然闯入,是十分危险的。

而谭老师的《C程序设计》仿佛在只给了初学者背包、水壶和印在门票上的小地图的情况下,就举着小旗把读者带进了这座强大的森林。

学习C语言程序设计,就像我们学习写文章一样。仅仅掌握了具体的词法句法,是无法写出优美的文章的,除了需要阅读大量的名著外(这个毫无疑问需要时间的累积),更重要的,是你首先要在思想上真正明了文字的力量和掌握构造文章整体架构的技巧。

遗憾的是,谭老师的《C程序设计》教给了读者C语言的语法,却没能教给读者更好地去设计一个程序。 为了给这部经典著作弥补这一缺憾,陈冰老师策划了这本不可思议的《伴侣》。而我很荣幸得到了具体来创作这本书的机会。

针对C语言中的重点和难点,本书进行了更加生动有趣、更加深刻,但同时又更容易理解的阐述。读者在学习之后,不仅会对C语言中的各种知识有更加生动形象的理解,更重要的是,能够知道程序是怎样炼成的,在以往隔靴搔痒的表面下真正发生了什么。并最终用C语言编写程序加以解决,顺利地完成从“问题”到“程序”的这样一个编程解决问题的过程。

本书不深究C语言的语法规则,在这一方面,谭浩强老师的《C程序设计》已经讲得很详尽了。我们不会浪费时间重复发明轮子。一句话,所有《C程序设计》中已经讲明白的地方,本书都不重复讲解。

本书的笔墨放在了彻底讲清楚难以理解的概念、重点和难点上,放在了帮助初学者建立良好的编程思想和符合业界标准的编程规范上,放在了从实际应用出发,指导初学者在实际开发和应用中遇到问题时如何思考和解决上。

读者在学习这本《伴侣》后,不仅会因为拥有了一个从未有过的清晰的编程头脑而可以轻松通过C程序设计课程的考试,更会因为建立起可圈可点的专业的编程思想而拥有更强的解决实际问题的程序设计和开发能力。

谭老师的《C程序设计》比较生硬晦涩,这本书让它更加有趣;《C程序设计》所讲解的知识难以理解,这本书让它更加容易;《C程序设计》只注重知识的讲解,这本书为它补充上基础而宝贵的编程素养、编程思想、编程经验,让你从深处开始强大。

喝咖啡,常常会加上咖啡伴侣或是牛奶,它会遮盖咖啡的苦涩,让咖啡更加香醇。如果把谭浩强老师的《C程序设计》比作一杯略带苦涩的咖啡,这本书就是它最佳的伴侣,让你的C程序设计之路更香醇。

本书作者:陈良乔 2012年2月2日

如何使用这本书

翻开书,你会发现这本《C程序设计伴侣》(以下简称《伴侣》)的目录与谭浩强老师的《C程序设计》(第四版)的目录有些类似,但二者又有明显的区别。事实上,准确地说,这本书的目录是谭浩强老师的《C程序设计》目录的超集。

也就是说,谭浩强老师的《C程序设计》的目录中的每一个目录都在《伴侣》中有一个与之对应的目录,这两个目录的标题序号是完全一致的,但标题名并不一样或并不完全一样。

比如:《C程序设计》的1.4节是“最简单的C语言程序”,与之对应的《伴侣》中的目录就是1.4节的“第一次的亲密接触——Hello,World”。

这些目录在《伴侣》中会以双标题的形式出现,上层是《伴侣》中的标题,下层是《C程序设计》中的对应标题。

这样的目录安排,是为了读者查阅和学习的方便。读者可以在学习完《C程序设计》的某一章节后,带着疑问再来看《伴侣》中对应的章节。通过《伴侣》中更加生动有趣和更加透彻的解释,你可以更好地理解这一章节的内容,有一种豁然开朗的感觉。

除了有与《C程序设计》中一一对应的目录外,《伴侣》中还穿插有一些特别的目录,这些目录的标题序号中含有字母(A、B、C、D等)。这些含有字母的目录表示是《伴侣》额外增加的,其中的内容是《伴侣》中独有的全新内容。

比如:《伴侣》中的1.4.A节“最简单的C语言程序背后的故事——它的汇编代码是如何被执行的”就是《伴侣》中独有的全新内容。

这些内容或者是学好C语言所必需的知识和经验,或者是你应理解和掌握的编程素养和思想,而由于这些内容在《C程序设计》中完全没有涉及,因此,作者以独立章节的形式给以补充。当你的学习进展到相应章节的时候,可以独立地阅读这些章节,从而丰富你的知识、开阔你的眼界、增加你的经验。

一句话,双标题章节帮助消化,新增章节补充营养。

此外,当在《伴侣》中提到例x.x时指的是《C程序设计》中的例x.x。

因为《C程序设计》是以Visual C ++ 6.0作为开发工具的,所以《伴侣》在介绍开发工具的使用时,仍以Visual C++ 6.0为例,使得大家不至于太过陌生。而在编译代码的时候,为了让大家对C语言的最新发展有所了解,我们采用了以下两款主流编译器的最新版本作为我们的主要编译器。

本书大部分代码都可以使用MinGW(Minimalist GNU for Windows)并添加-std=gnu99编译选项进行编译。或者是使用Visual Studio 2012的“VS 2012开发人员命令提示”(位于“开始→所有程序→Microsoft Visual Studio 2012→Visual Studio Tools”)下,添加/TP编译选项进行编译。例如,你可以使用如下的命令来编译第一章的Hello World程序:

使用MinGW编译: gcc –std=gnu99 HelloWorld.c -o HelloWorld.exe

使用Visual C++ 2012编译: cl /TP HelloWorld.c

其中的少部分代码,因为用到了一些特殊的编译器扩展,只能在“VS 2012开发人员命令提示”下进行编译。例如第七章的简易下载程序: cl /TP get.c

关于开发工具和源代码的下载,以及开发环境的配置,欢迎访问本书作者的技术支持网站: http://www.wking-china.com/xpjylc/

本书策划编辑:陈冰 本书作者:陈良乔

致  谢

在这个世界上,从来就没有哪一本书,是仅凭作者一己之力完成的。这本书,也同样是在众多老师、朋友的帮助下完成的,尽管它只是一本薄薄的小书。

在这里,我首先要感谢谭浩强老师,您创作的《C程序设计》,是这本书的全部源头;感谢这本书的策划者陈冰老师,是您提出了这样一个从未有过的新鲜创意,并给予我大量的指导。

其次,我要感谢父母的默默支持;感谢亲爱的贾玮,你的支持、鼓励和期许,以及偶尔的打击,都是我的动力和灵感的源泉。

最后,要感谢周静姐姐在我重病期间给予我的鼓励和教诲;感谢老朋友单春辉给予的关心和支持;感谢好朋友丁春利帮我收集资料;感谢好朋友马洪旭、张潇、崔小行、熊耀华等帮我审阅书稿,你们的意见和建议,让这本书更有针对性,带给读者更多的宝贵实践经验;感谢Elmar Driesch先生、Andreas Muench先生及Thorsten Thomsen先生给予我的帮助和教导;在本书的创作过程中,我也参考了一些网络上的资料,在此也一并感谢这些不知名的默默无闻的分享者。

感谢所有关心我的朋友,我爱你们!

陈良乔     2011年感恩节 于 重庆

当当预订地址:http://www.wking-china.com/xpjylc/product.aspx?product_id=22880872