background image

在准备向 高手 方向努力时,请先转向 Unix 平台。

三、万事俱备,你就是东风 
  书已选定,环境配置完成,正所谓万事俱备,只欠你自己的努力了。请从书的
前言开始,仔细地阅读手头的教材,很多人看书喜欢直接从第一章开始看,这是错
误的做法。前言是作者对整本书的大体介绍,作者一般会告诉你需要什么基础才能
够顺利阅读本书,这可以帮助你检验自己的基础知识是否已经具备。看完前言,还
要浏览一下目录,了解一下书的整体结构,顺便给自己安排一下学习计划。

  学习 C 语言,必需注意每一个细节,书上的例子代码一定要自己亲自敲一遍,
编译执行输出都跟书上说的一致才能算是学完了一个例子,如果不一致,就要仔细

找原因。出了书本上有的例子,自己还要 创造 一些例子,比如学习运算符优先级
的时候,可以写几个相同的表达式,在不同的位置加上括号,看看有哪些不同的行
为,比如*p++和(*p)++,又比如 a = b == c、(a = b) == c 和 a = (b == c)等

等。自己抄的书上的例子以及改造之后的例子,还有自己 创造 的例子,都应该仔
细地归类保存,并且要在源代码中写上简短的注释,阐述这个例子的意图。 

  例子之后就是习题了,我建议初学者把所有的习题都独立做一遍,然后对照答
案的代码,看看自己的代码有那些不足,再试着修改自己的代码。很多人不重视习
题,这是极大的错误,因为作者通常会在习题中说明一些重要的道理,而不是单纯
地检验前面的知识。

  也许你认为这样学习太慢,其实不然。学得细致就不用走回头路,等你学到后
面才发现自己前面没搞清楚,那才是真的得不偿失。一般说来,整本书读完,你应
该完成数千行乃至上万行的代码,无论是原封不动照抄书上的,还是自己心血来潮
写就的,都是今后继续学习的一笔财富。以我自己举例,阅读《Windows 核心编
程》时(我只阅读了 3/4 的内容),除了抄书上的代码,还自己写了很多例子,一
共有 5574 行(用 unix 下的 wc 工具统计),时隔多日,我早已记不清 Windows 的
系统编程了,但只要花几分钟翻出以前的代码看看,便会重新了然于胸。所谓好记
性不如烂笔头,就是这个道理。

  仔细读书、认真抄写源代码、独立完成习题外加更进一步的实验,最后将所有
的代码留下,成为自己的经验和财富,绝对的辛苦,也绝对的事半功倍。当然,这
种方式只适合学习需要精通的技术,如果不是学习 C 语言,你还要具体情况具体分
析。

  写到最后,还有非常非常重要的一点没有提及──代码风格,从最开始学习就
必须强迫自己模仿最优秀的代码风格。因为代码风格太重要内容也太多,我会用专