这是一本关于C语言的数组和指针的书。 一定有很多人感到纳闷:“都哪朝哪代了,还出版C语言的书。” C语言确实是非常陈旧的语言,不过也不可能马上放弃对它的使用。至少在书店里,C语言方面的书籍还是汗牛充栋的,其中专门讲解指针的书也有很多。既然如此,还有必要旧瓶装新酒吗?这才是最应该质疑的吧。 但是,每当我看到那些充斥在书店里的C语言入门书籍,总会怀疑这些书的作者以前根本没有使用C开发过大规模的系统。当然,并不是所有书的作者都这样。 指针被认为是C语言中最大的难点,对它的讲解,很多书都搞得像教科书一样,叙述风格雷同,让人感觉有点装腔作势。就连那些指针的练习题,其中的说明也让人厌倦。 能够炮制出这样的书籍,我想一般都得归功于那些连自己对C语言语法都是一知半解的作者。特别是面对那些在封面上堂堂正正地印上“第2类信息处理考试”[ 日本国内关于计算机信息处理方面的考试,主要面向计算机系统开发、维护、运用领域的初级技术人员。 ——译者注]字样的书,这种感觉更加强烈。 当我还是个菜鸟的时候,也曾对数组和指针的相关语法感到非常“纠结”。 正是抱着“要是那个时候上天能让我遇见这样一本书,那可真帮了大忙”的想法,我写了这本书。 本书的内容,是基于我很久以前(1998年7月)就开始在网上公开的内容: “深入学习数组和指针” http://kmaebashi.com/programmer/pointer.html “当我傻呀?既然可以在网上阅读,我干嘛还买你的书?”我想对有此想法的人说:“我敢打包票,绝不会让你吃亏的,请放心地拿着这本书去收款台结账吧!”因为此书在出版过程中追加了大量的文字和插图,实际上已经比网上公开的内容丰富了许多。 另外,在阅读本书的过程中,请留心以下几点。 本书的读者群虽然定位于“学习过C语言,但是在指针的运用上遇到困难”的读者,但还是能随处可见一些高难度的内容。那是因为我也不能免俗,偶尔也喜欢把自己掌握的知识拿出来显摆一下。 对于初学者,你完全没有必要从头开始阅读。遇到还不太明白的地方,也不要过分纠结。阅读中可以跳跃章节。对于第0章和第1章,最好还是按顺序阅读。如果认为第2章有点难度,你可以先去啃第3章。如果第3章也不懂,不妨尝试先去阅读第4章。这种阅读方式是本书最大的卖点。 在本书中,我会经常指出一些“C的问题点”和“C的不足”。可能会有一些读者认为我比较讨厌C语言。恰恰相反,我认为C是一门伟大的开发语言。倒不是因为有“情人眼里出西施”、“能干的坏小子也可爱”这样的理由,毕竟在开发现场那些常年被使用的语言中,C语言还是有相当实力的。就算是长得不太帅,但论才干,那也是“开发现场的老油条”了。 所以,因阅读本书而开始抱怨“C语言真是很差劲”的读者,你即使计划了什么“去揍Dennis Ritchie[ C语言之父。本书中对他做了介绍。]之旅”,我也不会去参加的。如果有“去揍James Gosling[ Java语言之父。]之旅”,那还是有点心动的。哈,还是算了吧,得过且过就行啦。 在本书的写作过程中,我得到了很多人的帮助。 繁忙之中阅读大量原稿并指出很多错误的泽田大浦先生、山口修先生、桃井康成先生,指出本书网上公开内容的错误的人们,还有那些受到发布在公司内部的内容的影响而沦为“实验小白鼠”的人们,以及通过fj.com.lang.c和各种邮件列表进行讨论并且提供各种信息的人们,正是因为你们,本书的内容才能更加可靠。当然,遗留的错误由我来承担所有责任。 发现我的网页,并给予出版机会的技术评论社的熊谷裕美子小姐,还有给予初次写书的我很多指导的编辑高桥阳先生,如果没有他们的大力协助,这本书是不可能诞生的。 在这里,我谨向他们致以深深的谢意。 2000年11月28日 03:33 J.S.T. 前桥和弥