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