译者序
在平时的工作中,我时常遇到两种人:一种是刚毕业的新人,问他们:“以前学过 C 语言吗?”他们大多目光游离,极端不自信地回答说:“学过,但是……”;另一种是做过几年 C 语言开发并自我感觉良好的人,他们大多可以使用指针熟练地操作字符数组,但面对菜鸟们提出的诸如“为什么数组的下标是从 0 而不是从 1 开始”这类“脑残”问题时,总是不耐烦地回答道:“本来就是这样嘛。这是常识,你记住了就行!”(可本来为什么是这样的呢?)
本书的作者不是大学老师,更不是那些没有写过几行程序的学究,而是一位至今还工作在开发一线的程序员(在国内,工作了 5 年的你如果还在做“码农”,肯定会坐立不安了吧)。他带给大家的不是教科书中死板的说教,而是十多年经验沉淀下来的对无数个“脑残”问题的解答。在这本书初版面世的 11 年后,我在东京一个大型书店的 C 语言类别的书架上,依然还能看见这本书被放在一个非常醒目并且触手可及的位置上。
能从书架上挑出本书的人,我想大多都是对 C 语言指针带有“恐惧感”的程序员吧!其实所谓的“恐惧感”来源于“困惑”,而“困惑”又来自于“对知识点不够透彻的理解”。作者运用幽默风趣并且不失犀利的笔法,从“究竟什么是 C 语言指针”开始,通过实验一步一步地为我们解释了指针和数组、内存、数据结构的关系,以及指针的常用手法。另外,还通过独特的方式教会我们怎样解读 C 语言那些让人“纠结”的声明语法。
带着学习的态度,我对原著的每一个章节阅读三次以上后才开始动笔翻译。每次阅读我都会有新的收获,建议购买本书的读者不要读了一遍就将其束之高阁(甚至一遍读不下来就扔到一边)。隔一段时间再来读一遍,收获会更多。
在翻译的过程中,我身边的许多人给了我莫大的支持和鼓励。我的同事的宋岩、王红升在 C 语言方面都具有 10 年以上的编程经验,他们经常牺牲个人的休息时间帮我试读译稿,提出了诸多宝贵的意见和建议。开始翻译这本书时,我儿昀好刚出生三个月。新的生命改变了一家的生活状态,带给我们更多的是感动和欢乐。妻子葛亚文在我翻译本书的期间默默承受了产后在身体上和精神上的巨大压力,这不是一句感谢能够回报的。借此祝愿一家——四季有昀,岁月静好!
吴雅明
2012/11/26 于北京