background image

 
    对于一个只懂得 Windows 基本操作、连 DOS 是什么都不知道的新手而言,尽快做一些
有趣而有意义的事情才是最重要的。用 C 语言写一个小程序远比学习 ls、cat 等命令有趣,
况且我们要专注于 C 语言本身,就不得不暂时忽略一些东西,比如编译链接的过程、Makefile
的写法等等等等。所以我建议初学者应该以 Visual C++ 6.0(不是 VisualC++ .NET)或者 Dev 

C++作为主要的学习环境,而且千万不要在 IDE 的使用技巧上过多纠缠,因为今后你一定要
转向 Unix 环境的。Visual C++ 6.0 使用很方便,调试也很直观,但其默认的编译器对 C 标准
的支持并不好,而 Dev C++使用 gcc 编译器,对 C99 的标准都支持良好。使用顺带提一下,
很多大学的 C 语言课程还在使用 Turbo C 2.0 作为实验环境,这是相当不可取的,原因其一
是 TC 2.0 对 C 标准几乎没有支持,其二是 TC 2.0 编译得到的程序是 16 位的,这对今后理 
解 32 位的程序会造成极大的困扰(当然,用 djgpp 之类的东西可以使 TC 2.0 编译出 32 位程
序,不过那过于复杂了)

。 

 
    等你学完一本 C 语言的教材,你一定要转向 Unix 平台继续学习,几乎所有的 C 语言高
级教程都是基于 Unix 平台的(比如《C 专家编程》)。转变的过程是痛苦的,你需要面对的
是各种纷繁复杂的命令,完全不同于 Windows 平台的思考方式,但是这种痛苦是值得的。

Unix 与 C 是共生的,Unix 的思考方式和习惯更加符合 C 语言的思考方式和习惯。在 Unix
下,你可以找到无数优秀的源代码供你尽情阅读,你可以方便地查 
看某个库函数的联机手册,还可以看到最优秀的代码风格。归结起来就是一句话:初学 C
语言,建议使用 Windows 系统和集成开发环境,在准备向“高手”方向努力时,请先转向

Unix 平台。 

 
三、万事俱备,你就是东风   
    书已选定,环境配置完成,正所谓万事俱备,只欠你自己的努力了。请从书的前言开始,
仔细地阅读手头的教材,很多人看书喜欢直接从第一章开始看,这是错误的做法。前言是作
者对整本书的大体介绍,作者一般会告诉你需要什么基础才能够顺利阅读本书,这可以帮助
你检验自己的基础知识是否已经具备。看完前言,还要浏览一下目录,了解一下书的整体结
构,顺便给自己安排一下学习计划。 
  学习 C 语言,必需注意每一个细节,书上的例子代码一定要自己亲自敲一遍,编译执行
输出都跟书上说的一致才能算是学完了一个例子,如果不一致,就要仔细找原因。出了书本
上有的例子,自己还要“创造”一些例子,比如学习运算符优先级的时候,可以写几个相同
的表达式,在不同的位置加上括号,看看有哪些不同的行为,比如*p++和(*p)++,又比如 a 

= b == c、(a = b) == c 和 a = (b == c)等等。自己抄的书上的例子以及改造之后的例子,还有
自己“创造”的例子,都应该仔细地归类保存,并且要在源代码中写上简短的注释,阐述这
个例子的意图。  例子之后就是习题了,我建议初学者把所有的习题都独立做一遍,然后对
照答案的代码,看看自己的代码有那些不足,再试着修改自己的代码。很多人不重视习题,
这是极大的错误,因为作者通常会在习题中说明一些重要的道理,而不是单纯地检验前面的
知识。也许你认为这样学习太慢,其实不然。学得细致就不用走回头路,等你学到后面才发
现自己前面没搞清楚,那才是真的得不偿失。一般说来,整本书读完,你应该完成数千行乃
至上万行的代码,无论是原封不动照抄书上的,还是自己心血来潮写就的,都是今后继续学
习的一笔财富。以我自己举例,阅读《Windows 核心编程》时(我只阅读了 3/4 的内容),
除了抄书上的代码,还自己写了很多例子,一共有 5574 行(用 unix 下的 wc 工具统计),时
隔多日,我早已记不清 Windows 的系统编程了,但只要花几分钟翻出以前的代码看看,便
会重新了然于胸。所谓好记性不如烂笔头,就是这个道理。仔细读书、认真抄写源代码、独