C语言点滴(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-31 00:10:45

点击下载

作者:赵岩

出版社:人民邮电出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

C语言点滴

C语言点滴试读:

前言

C 语言的书林林总总,数不胜数,其中不乏《C Programming [1][2]Language》这样的Bible 级经典白皮书,也不乏《C 陷阱与缺陷》、[3]《C Programming FAQs》这样的工程师枕边必备。中文教材方面也[4],[5]有《C 语言程序设计》这样广受学生们欢迎的教科书。所以任何再写C 语言书籍的作者,都要首先回答这样一个问题,为什么还需要这样一本书?

首先说明,这本书不是教材。任何教材都是“扁平”结构的,争取覆盖面广一些,同时每一部分又不是太深入,以免学生们被细节吓跑,同时也避免了一叶障目而不见森林。而本书最大的特点是在C 语言常用的若干知识点上做了深入探究。从这个意义上来说,它应该是一种“纵深”结构的。聪明的读者已经意识到,与这本书类似的那就[2]是《C 陷阱与缺陷》,这么理解也对,也不对。对的就是本书确实选取了C 语言的一些必备知识,相对来说,也是初学者容易搞不清楚、犯错误的知识点,做了深入地分析和介绍。不对的是这些知识点主要立足于教材中的内容,主要是对教材中没有进行详细解释的地方进行了补充式说明。你会发现,就连本书的顺序都与一般的教材相同。这些知识点也是我在教学过程中,我的学生们经常产生疑问或困惑的地方。坦白地说,这些知识点我也曾经困惑过,所以我猜在你学习的过程中也会有困惑。

同时,本书选取的主题,都是学习C 语言必备的知识点。对每一个知识点,又不太像《C 陷阱与缺陷》那样,一一列举出现错误的例子,给出阐释和警告;更多是从正面解析清楚知识点的原理,然后通过程序来解释剖析,真正做到讲解精炼,基本上一两个实例即可说明关键知识点。另外,对于数组、指针这样的关键章节,本书又不惜篇幅,讲解清楚。一些关键知识点讲解,引用到国外的经典著作,给读者很好的扩展阅读空间。通读并理解本书后,读者会更加深入地理解C 语言的机制和特点,也必将能够正确高效地使用C 语言进行编程。

本书另外一个特点就是语言轻松幽默,阅读和学习门槛相对较低,读者阅读和学习的时候不会觉得枯燥。本书的编辑读过之后,说这是本书的一个特色,其实主要是因为从小到大,大家总是笑话我,后来我想通了,决定写这本书,在你们笑的同时,多少我还能赚点钱:)。不瞒你说,我最大的理想就是:以后某个同学问学习C 语言用什么书时,大部分人都会对他说,“选某某教材,另外再加上赵岩的《C 语言点滴》。”

给书起个好名字,是一个比较难的事情,既要反映书的内容,还要给读者留下深刻的印象。原来准备将它叫作《C 语言神韵》,但是C 语言中没有任何东西是它独有的。很多其他的语言都或多或少地借鉴了它的语法和思想,例如C++、Java和Perl等。再说,如果C 语言是个女孩子,我也就是刚刚和人家认识,趁人不注意摸一下小手而已,这个时候妄谈什么神韵还太早了。如果以后能长久地相处下去,像Ritchie那样终身携手,那个时候,神韵才会慢慢显露出来。

灵感就在电光火闪之间,就叫做《C 语言点滴》吧。第一,本书并不是一个系统的教材,而是对某些知识点进行了分析,符合“点滴”这个语境。第二,C 语言是一个大海,本书的内容只是其中的几个小水滴,但是俗话说“滴水藏海”,如果读者能通过这些小水滴有所思考,并有所收获,将是作者最高兴的一件事。

读者对象

本书面向各种层级的C 语言学习者。我这么说绝对不是为了增加读者的数量,说实话,你也不会因为读者对象不包含你就不去读这本书。你在18 岁以前,一定读过读者对象并不包含你的书,但你依然去读,原因很简单,因为你喜欢读。本书的面向对象确实有点广,这是由本书作者的经历决定的。作者曾经是一名C 语言的程序员,经历过溢出和越界的各种错误,所以本书中包含了各种工程的注意事项和编程技巧;同时,作者又在大学里面教授过C 语言,所以书中又有各种基础知识和原理的深入解释和介绍。可以说,本书面向读者覆盖了学生,又不单单是学生,甚至考虑到学生未来的学习和职业生涯。

虽然本书可以面向C 语言初级到高级的所有读者,但是不同的读者对象阅读的方法是不同的。如果你是初学者,是已经学习或正在学习C 语言的学生,不要把本书一口气读完,这样不仅无趣,还会把自己搞糊涂。在阅读本书的时候,你手中应该有一本教材。当你对教材中的某些地方不太明白,或者是实际编程的时候遇到了一些问题,而教材又没有给出相关的答案时候,这本书就是你最好的辅助教材。C 语言教学一直提倡“精讲多练”,这本书就是为了配合“精讲”而准备的。

如果你是C 语言的中级读者,一个高年级的学生或者已经是一个程序员,知道函数指针但是还不知道函数指针该用在什么地方,知道了数组和指针的关系,但是不知道如何定义一个指向二维数组的指针,这个时候,本书是一本重要的参考书。本书有针对这些问题的原理性介绍,同时,书中还有编程技巧方面的介绍,这对程序员也有很大的帮助。毕竟,我曾经也是一名程序员,也曾经在周末的时候,为了一个bug 而加班。我相信,当你阅读完本书后,你一定会写出更玄、更高效、让小师妹眼前一亮、心头一热的代码。

如果你是C 语言的高级读者,教授C 语言的老师,或是高级的程序员或项目经理,本书会让你进一步加深对C 语言的理解。另外,本书中推荐的一些扩展资料中也许会有你感兴趣的东西。如果你喜欢这本书,那就向别人介绍一下,如果你不喜欢本书,那就私下和我说说。如果有不同的理解或发现了错误,非常感谢你告诉我。

如何阅读本书

很明显,学习C 语言的主要目的就是成为一名专业的程序员。所以,本书第1、2章从程序员的角度,以轻松的笔触,介绍了编程方面的基本知识,包括常见的开发语言比较、开发平台、集成开发环境及源码管理工具等。希望读者在开拓视野的同时,在一个比较轻松的程序员文化氛围中,找到同感并引发进一步阅读的兴趣。

第3~13章,本书对C 语言中的重要知识点进行了系统而详细的介绍,根据学习C 语言的一般顺序,包含数据类型、表达式和控制结构、输入输出、函数和库函数、数组、指针、结构体、文件、错误和调试等,对主要知识点从原理和工程应用两个角度给予充分地介绍。本书尤其是对C 语言的两个重点和难点——指针,数组以及背后的关于内存的知识进行了重点和深入地讲解。

第14章是读者阅读完本书后的回顾,从效率入手,引入到继续学习的路径。总体来说,从学生进入校园到进入职场,从学习C 语言的Essential 知识,到后续的进阶,本书考虑得比较完整。

对于C 语言的初学者,不建议首先通读本书,而是在学习的过程中,带着相关问题,有的放矢地阅读本书;对于中高级程序员,可以在充分理解的情况下,通读本书。

本书体例说明

本书所有源代码及C 语言关键字采用等宽字体进行排版。

本书配套资源

本书的相关网站“http://www.hrbxinzhi.com/cbook/book.html”,提供了很多和本书内容相关的扩展资料。本书没有配套的光盘,所有的代码都不长,完全可以自己亲自敲进电脑。代码的长度并不重要,重要的是真正地理解代码要传达的思想,并能够在日后践行这些思想。

如果要在课堂上使用本书,可以在乐学网上下载我教授C 语言所用的课程课件,输入http://cms.hit.edu.cn/course/view.php?id=100 网址后,在出现的页面中猛击“随便看看”就可以了。我的课程不需要注册,可以通过访客的身份来浏览和下载。整个课件可以与本书在C 语言教学中搭配使用。

对本书的任何反馈都可以通过zhaoyan.hrb@gmail.com 发送给我,我非常感谢你们宝贵的意见。

致谢

首先我要感谢C 语言的创始人之一,丹尼斯·里奇(Dennis Ritchie)。在我写这本书的时候,他于2011 年10 月9 日逝世。没有他,就没有C 语言,也就没有这本书。正所谓饮水思源,所以我写下了下面的程序来纪念这位大师。

/* 纪念大师 */

1 #include<stdio.h>

2 int main(){

3 printf("Goodbye, World!\n");

4 return 0;

5 }

他最开始出于兴趣,开发了UNIX 系统并发明了C 语言,这两个成就足以彪炳史册。他再一次证明了IT 领域中的重大创新基本上都是来源于天才的兴趣,既不是来源于大把大把地烧钱,更不是来源于行政命令造成的大跃进。

写这本书的同时,我还在哈尔滨工业大学软件学院教授C 语言。下图中显示了我的学生在QQ 上给予我的印象,以及通过教务处网站匿名给我的评教结果和评语。在2010 年我的评教结果为A,2011 年度又获得了全学院唯一一个A+。

我非常感谢这些优秀的学生,他们对我的教学工作给予了很高的评价。学生们的评价给予了我信心;同时,他们各种古怪的问题和聪明的发现给予了我很多灵感,所有这些,最终促使我下定决心,写一本关于C 语言方面的书,帮助同学们克服学习C 语言中常见的困难。教学是件天底下最有趣的事情,不仅可以传授知识,还可以促使你不断地进步。因为如果你不与时俱进,虽然你可以看到学生们在课堂上频频点头,但是他们一定是在打盹儿。

我还要感谢出版社方面的朋友。和出版社的朋友合作是一件令人愉快的事情,正是有了他们的帮助,本书才能顺利出版。你可能像我一样,不认识陈冀康这个人,就像你不认识沃兹尼克这个人一样。但是如果我说,沃兹尼克,而不是乔布斯,开发了第一台苹果电脑,我相信你会记住沃兹尼克;与此类似,陈冀康编辑,主持翻译、引进、出版了《C 陷阱与缺陷》、《C 和指针》和《C 专家编程》这三本工程师宝典级别的书籍。这个世界上总有一些幕后英雄,他们在默默做一些貌似平凡、实则伟大的事情。当我收到了陈编辑长长的回信,并且同意尽快出版本书的时候,我知道,我成功了!

最后我要感谢我的父母及家人,你们对我生活上的帮助和照顾,对我非常重要。感谢我两周岁的女儿Millie(米粒)。如果没有她,这本书两年前就应该已经写完了!不过质量一定没有现在好:)在我写书的这段时间,她既长了重量,也长了个头,不过长的最多的还是脾气。我的妻子在我写书的过程中,不仅一次地凑过来打听:“这本书你要献给谁啊?”我一直都没有反应过来,倒不是因为我笨,而是我一直认为,我没必要把书献给她,这本书就像Millie,本身就是属于我们俩的!赵岩  写于2012年12月

作者简介

赵岩,哈尔滨工业大学计算机应用软件博士。曾经在东芝(中国)研发中心担任研究员,研究机器翻译中的句法分析。后到荷兰Groningen 大学语言与认知中心学习。随后在哈尔滨工业大学软件学院担任高级讲师,主要教授C 语言程序设计。

作者接受过正规的计算机科学教育,兼有丰富的软件实践开发经验,同时还有不同文化的留学背景。在哈工大授课期间,他逐渐形成了深入浅出、轻松幽默的讲课风格,深受同学们的欢迎和喜爱。2010年度,他教授的“C 语言程序设计”课程被全院学生评级为A。2011年度,他又获得了全学院唯一一个A+课程评级。

第1章 程序猿&&程序媛

1.1 装备篇

1.1.1 衣着

程序猿们通常并不在意穿着,整天西装革履的基本上都是销售人员。一般的程序员日常的穿戴通常都是牛仔裤和T 恤衫,其中一个最主要的原因在于这种穿戴根本不用花时间去打理。牛仔裤很难用眼睛来判断已经多长时间没洗过了,除非你用鼻子靠近去闻一闻。T 恤衫虽然比较容易脏,但是可以一次买7件,一周7天每天换一件,不同的颜色和图案还可以代表本日不同的心情。周一可以穿一件有熊图案的T 恤,代表这一天基本上自己会比较“熊样”;周五的时候可以穿一件有鸟图案的T 恤,代表下班以后自己就会比较“鸟样”了。或者可以在各种开源大会上领取免费的T 恤,上面印着Ruby on rails,Eclipse 什么的,让别人一看就知道自己是干什么的,这样小偷不偷,女孩不理,连狗都不咬。

有人说,这种穿着主要为了随意,或者套用时髦的话叫做“小清新”。但是我个人的感觉是,程序员在个人生活上好像都比较懒惰。如果既不想在衣服上花太多时间,又不想显得自己太脏,那么牛仔裤和T 恤衫应该就是首选了。除此以外,程序员还有三宝:眼镜、胸卡、双肩包,再加上一头凌乱的发型,那100%是一个程序猿了。俗话说:“嫁人就嫁程序猿,钱多话少死得早”,看来程序猿这个职业在相亲市场上还是比较有吸引力的。不过如果一个程序猿不仅水平高超,而且衣着整洁、光鲜,那么各位MM 就不要再打他的主意了,因为他可能已经有了一位贤惠的妻子。

资深的程序员或大牛通常一般都在家里工作,或者类似于家里的环境工作,所以穿着上可能就是大短裤和拖鞋了。说起拖鞋,不能不提到图1-1。这是一款程序员专用拖鞋,不经意间,它就暴露了你的身份,同时它还有脚底按摩的功效。

好的,如果召开一次运动会,那么下面这段话就是程序员代表队的出场辞:“现在向主席台走来的是程序员方阵!他们套着拖鞋,穿着短裤,披着毛巾,左手拿着键盘,右手举着鼠标,腋下夹着USB 移动硬盘。他们头发凌乱,眼睛因睡眠不足而显得迷离,喊着微弱的口号走过主席台,主席问候道:“程序员们辛苦了!”程序员方队异口同声地答道:“Hello World!”图1-1 程序员专用拖鞋1.1.2 键盘和鼠标

虽然穿着键盘形状的拖鞋,但是你一定要知道,键盘是用手敲的,而不是用脚踩的。伴随着Windows 等图形界面操作系统的流行,鼠标得到了广泛的普及和应用,以至于有的人由于频繁地按鼠标而得了一种名为“鼠标手”的关节病。苹果的Mac OS 系统中自带的Spotlight 可以让你很大程度上脱离开鼠标,如果想在Mac OS 上启动Word 程序,只需要利用快捷键启动Spotlight,在Spotlight 上面输入wo,在出现的提示里面选中Word 程序,然后回车就可以了。最新版的Window 8 也在快速启动上下了一番功夫,它分别支持在应用程序中、设置中或者文件系统中快速地查找你感兴趣的内容。例如:如果想增加一个蓝牙设备,首先按Winkey+w,启动搜索功能,然后输入“蓝牙”,就可以看到所有与蓝牙功能相关的设置和操作了。

整个过程中,双手根本不需要离开键盘,所以效率会比较高。作为程序员,可以不考虑健康,但是一定不能不考虑效率,如果能把快捷键用得非常流利,那么无疑会大幅度提升你的效率。

为了减少用鼠标的次数,有些人坐到电脑前的第一件事就是把鼠标翻过来,让它四脚朝天。这样就强迫你多用键盘来完成以往用鼠标完成的任务,比如打开一个文件等。不过这只是训练的初级阶段,训练的高级阶段是在以往放鼠标的地方放一个仙人球或仙人掌,不仅净化空气,而且经过几声惨叫后,会对鼠标产生一种莫名的恐惧并终身彻底脱离鼠标。

如果想熟练地使用键盘,就不能不提到Ctrl、Shift、Alt 三个功能键。这几乎是所有快捷键组合中必须要用到的。正确地按Ctrl 的方法不是用小手指,而是应该用你的手掌。Shift 键必须用小手指。然后就是Alt 键,正确的方法是用大拇指,因为Alt 键就在空格键的两边,所以大拇指往里弯一点,就可以够得着了。总结为一句话就是:“Ctrl 用掌拍,Shift 用小指按,Alt 用大拇指抠。”用这个方法手不用移动位置就可以很方便地按住这三个功能键了。抱歉我对此方法的描述有点普通,不够文艺了。其实我也能够写得很文艺,比如说:“当日华山论剑,先是他用黯然销魂掌,破了我的七十二路空明拳;然后我改打降龙十八掌,却不防他伸开右手食指中指,竟是六脉神剑商阳剑和中冲剑并用,又胜我一筹。可见天下武功彼此克制”。这段话够文艺了吧,但是你能明白我在说的是石头、剪子、布游戏吗?

目前市面上常见的键盘有一个问题,那就是左右不对称,如图1-2 左面的键盘所示,键盘左侧的三个功能键可以用前面提到的方法敲击到,但右侧的三个功能键却不行了。为了解决这个问题,生产厂家也推出了很多人体工学键盘,如图1-2 中右面的黑色键盘所示。图1-2 常见键盘(左)与人体工学键盘(右)

利用这种键盘的好处就是可以左右开弓,唯一的缺点就是由于敲击速度过快,会有噼里啪啦的声音,正所谓:“嘈嘈切切错杂弹,大珠小珠落玉盘。”

如果你只是一个电脑的普通用户,对键盘这个问题不用这么纠结。但是如果你是一个追求效率的程序猿,或者是在Linux 下用Vim 或者是Emacs 这样的命令行编辑器的神人,一个布局合理的键盘才显得非常重要。关于Vim 和Emacs,我们在2.4.2 节会作进一步地介绍。1.1.3 电脑

编程序不太需要很 power 的电脑。作为父母,如果有一天,你的孩子对你说:“我的电脑编程序的时候不够用了!”这个时候你一定要拒绝他。你可以这样对他说:“登月的阿波罗13号飞船电脑里面只有64KB 内存,而你的电脑中有1GB内存,是它的1万5千倍,而你还不知足!”我知道的唯一非常依赖于硬件的一个软件就是游戏,非常有可能他是要更新电脑来玩游戏。作为程序员,电脑越破,也许水平越高。就像武侠小说里面真正的高手,都是不拿兵器的,或者飞叶伤人,或者隔空打牛什么的。当然了,你我皆凡人,不可能用家里的固定电话就编写出一个程序,所以电脑还是需要一个的。我的建议是主流配置偏下就可以了。如果你很看重便携性,笔记本当然是必不可少的,买一个主流品牌的就行。现在的电脑价格已经不是太贵了,如果还想省点,DIY 或者是二手的都可以考虑。如果程序真的运行很慢,在更新电脑之前,先更新一下程序的算法试试!

有些同学不差钱,喜欢买一个强悍的电脑,希望能在开机速度上击败全国99%的电脑,但是自己的起床时间却输给了全国99%的同学,这也不是正确之道。毕竟,在软件领域,最有价值的是人,而不是机器。乔布斯就算拿一个破不锈钢饭盒子,也会被人认为是iPad 又出全金属加厚版本了,你说是不是?

电脑可以破点,不过如果有可能,最好买一个好一点、大一点的显示器。现在笔记本都支持外接一个显示器,好一点的台式机显卡也都有两个输出接口,支持连接两个显示器。两个显示器的好处在于,你可以一边写程序,一边查看相关的帮助文档。现在任何一门语言都有非常丰富的库,要记住这些库的全部细节是不可能的,所以必须能够随时查找到相应的定义、说明、例子等。这样,两个显示器可以帮助你减少很多窗口切换的时间和操作。图1-3 三个显示器并用

不过凡事都有个度。一般两个显示器也就够了,如果像图1-3 中那位妹妹整三个显示器,玩飞车或看电影比较爽,开发软件有点浪费了。

1.2 程序猿和互联网

虽然你可以对电脑的硬件要求不高,但是对另外一个功能还是应该严重关切一下的,那就是联网功能。最方便的联网方式无疑就是3G 联网方式了,可以做到随时随地上网。我在北京上班的时候,地铁车厢里有时会有人拿着笔记本通过3G 在上网。因为我还没有忙到这种程度,所以一般我在地铁上经常干的就是防范小偷、应付要饭的、还有偷眼看看周围的美女。

有了互联网,就有了一个巨大的宝藏,你需要了解一些知识,同时还需要能够利用一些工具从这个巨大的宝藏中获得你需要的信息和资源。本节的“搜索引擎”、“夺宝奇兵”分别介绍了一些常见的在互联网上发掘宝藏的知识和工具。同时,互联网也是一个社会,只不过在互联网的社会中,我们用假名说真话;而在现实社会中,我们用真名说假话。既然是一个社会,你就需要和别人进行联络和交流,也需要在互联网上交朋友。互联网是一个大舞台,不仅可以看别人的表演,还可以亲自上台表演。下面的“通信”、“社交”、“论坛与博客”小节分别介绍了相关的内容。1.2.1 搜索引擎

在学习的过程中,别忘了还有一位时刻陪伴你的很好的老师,他的名字就叫Google。对于将Google 翻译成“谷歌”,我一直耿耿于怀,就是搜点东西,装什么大尾巴狼呢!就应该叫“狗哥”才对。狗狗就是搜得准,称兄道弟的还显得亲切。而且,最重要的是,贱名好养活!要想在中国出人头地,必须要领会老子、庄子和孙子的精神,简称“老庄(装)孙子”精神。Google 不懂得中国文化的博大精深,难怪在全球市场上如此成功的明星公司,最终没有在中国市场占据第一。

Google 上的所有服务,包括搜索引擎,都是免费的。真正支撑起Google 大厦的就是搜索结果网页上的那个Google 广告条。你还别不信,就那豆腐块大小的文字,就是Google 的聚宝盆,给他带来滚滚的财源。

当然,这背后其实蕴含着一个自动、高效、准确的广告投送机制。内部的原理非常简单,那就是姚明绝不会利用Google 来搜增高鞋垫,所以Google 也不会把增高鞋垫的广告发到姚明的电脑上。原理虽然简单,但是实现起来也蛮复杂的。就像我们都知道飞机能飞的原理,但是真要造一架飞机,却不太容易。

我不清楚 Google 没有赚到钱的真实原因,也许是国人都不太愿意相信别人和广告,也许是因为有大量黑客控制“肉鸡”去骗取广告点击等。总之,与另外一家主流搜索引擎相比,Google 的本土商业化比较失败。虽然商业化失败,但是搜索结果的质量还是很高的。对于另外一家中文主流搜索引擎,有两点必须承认,第一,它并不支持英文检索;第二,它支持竞价排名。对于这个我不想多说。在这两点上,Google 与它做的正好相反。

作为一名老师,我在第一堂课就告诉我的学生,有问题问我,我不会,再去问谷老师,或者直接问谷老师也行。因为绝大多数时候,你问我的问题我也不会,我都是再偷偷地去问谷老师才得到答案的。所以说,大家都要养成一个好习惯,那就是“内事不决问老妈,外事不决问Google。”

利用 Google 搜索貌似简单,只要在搜索框中输入查询字符串就行,但是如何构建高质量的查询字符串还是需要一定的技巧的。利用Google 搜索时,需要知道一件事,所有的搜索引擎后台都是机器,不是人。例如,如果你看上某个女孩子,不过人家一定要在宝马车里面哭。这个时候,你一定想知道宝马车值多少钱?你可以输入查询字符串“养一个宝马需要多少米啊”,这个查询字符串和人说一点问题都没有,但是电脑却不懂。这倒不是因为搜索引擎很愚蠢,而是你有点难为人家了。

如果想高效地利用搜索引擎,我们需要遵循一个最基本的原则,那就是以网页撰写者的角度构建查询字符串。现在换个思路,如果让你写一个网页,来介绍宝马车的价格,你会怎么写呢?

很简单,直接写:“宝马车 1234 元人民币”好了。现在我们把思路换回来,如果让你查询这个问题,你该如何构造这个查询字符串呢?输入“宝马车 人民币 元”试试看!你会发现,结果非常地优雅,直中靶心。你会直接看到价格而不需要再继续点开结果网页,同时我相信,当看到价格后,你也不需要再去追那个爱哭的女孩子了。

如果有闲心和空闲时间,可以把这个查询字符串再输入到其他搜索引擎,看看返回的结果是什么。如果还有闲心和空闲时间,再试试这个网站“http://www.baigoogledu.com”,你会发现这个世界上像你同样闲的人还真的不少:)。

另外一点需要注意的是:构建查询字符串的过程一般是一个动态交互的过程。在构建查询字符串的时候,应该优先考虑简单的单词,避免使用比较复杂的查询句法和技巧,使用复杂的语法和一些高级的技巧会漏掉一些有价值的结果。即使简单的查询会返回很多噪声,也不用介意。构造查询字符串是一个动态交互的过程,可以通过开始返回的结果,不断调整查询字符串,或逐步使用一些高级的技巧来缩小查询结果。例如,想查找《天龙八部》这本书,输入“天龙八部”查询字符串的时候,返回的结果有很多是游戏方面的内容,这个时候可以调整查询字符串为“天龙八部-游戏”来去掉不需要的内容。这里我要说明一点,并不是高级查询技巧不应该用,而是应该避免上来就用或者查什么都用。

这里我们只是简单地介绍了两条基本的使用搜索引擎的原则,如果想高效地利用Google 搜索引擎,有一篇文章非常好,那就是http://www.hrbxinzhi.com/internet/resource2.html 上的“Google 搜索从入门到精通”,强烈推荐大家仔细研读。我个人非常喜欢的一个功能就是在特定文件类型中查找。这个功能很多时候非常有用,例如你可以用它来查找别人的学术论文,因为很多学术论文目前都是.doc 类型的文件,这样你就可以构造“C 语言filetype:doc”这样的查询字符串。1.2.2 通信

互联网上常用的通信工具主要包括电子邮件和即时通信两种。

本书的读者一定可以很熟练地使用电子邮件了,要不然你不会开始学习编程的知识,所以我只对使用电子邮件提三点建设性的建议。

狡兔三窟

电子邮件目前已经成了网上的身份证,如果你只有一个电子邮件账号,并且利用这个电子邮件账号在很多网站上注册,那么你会饱受垃圾邮件的困扰。所以,拥有一个电子邮件账号一定是不够的。我个人通常使用三个电子邮件账号,分别为主力邮件账号、候选主力邮件账号和注册邮件账号。主力的和候选主力的服务商最好一个选国际的,另外一个选国内的。这样遇到国际线路不通的时候,至少保证有一个能用的电子邮件。除非到了世界末日,否则这两个邮箱总该有一个是可用的。

轻易不要在网上公布自己的主力邮件账号,用注册邮件账号,而不是用主力邮件账号去注册一些不太经常使用的网站。保持主力邮件主要用于自己的工作、朋友的联络和注册一些正规和大牌的网站。账号的名字最好用自己的姓名,这样也方便别人记忆。但是中国人的名字重复很严重,通常需要在名字后面加上数字,比如自己的出生年月等。不过一般女生不愿意暴露自己的年龄,就像男生不愿意暴露自己的体重一样,这个时候你也可以用你电话号码的后几位。

密码一定要长

安全的密码至少包含两种以上的字符,如字母和数字,如果能加上特殊的字符就更好了。有些人说复杂的密码有时候会忘掉,所以你应该选择一些对自己有特殊含义的字符来帮助自己记忆。

前一阵CSDN 被爆库,很多用户的密码被公布于众,其中评选出最有创意的密码有三个。他们分别是季军:FLZX3000cY4yhx9day(飞流直下三千尺,疑似银河下九天);亚军:hanshansi.location()==[gusucity](姑苏城外寒山寺);冠军:hold?fish:palm(鱼和熊掌不可兼得)。另外有一些人的密码是暗恋人的手机号或者是姓名,被暗恋的人知道后,成就了好多对幸福的姻缘,可以说是不幸中的万幸。就像是一艘游轮沉没,对游客来说是没顶之灾,对游轮厨房中活着的龙虾来说,简直就是生命的奇迹!

Gmail

为了管理自己的邮件,你还需要一个邮件管理程序。你可以使用本地邮件管理程序,例如Outlook 或Foxmail 等。Outlook 等邮件管理程序设置比较简单,任何一个电子邮件服务商的帮助文件上都有详细的说明,教你如何配置。本地邮件管理程序的一个缺点在于如果你使用两台以上的电脑,那么你需要配置两次,而且两台电脑的同步问题也很令人讨厌。比起本地客户端,我个人更喜欢Web Mail 这种方式。只要有移动终端设备,并且该设备能联网使用浏览器,你就可以收发电子邮件了,这多少有点“云计算”的意思。因为所有的邮件都在“云”里,所以也不存在同步的问题,两者的区别见图1-4。Web Mail 也有很多对应的服务商和产品。我个人使用的是Gmail。图1-4 Local Mail(左)与Web Mail(右)

上面说到也许你会有多个账号,你可以利用其他邮件账号的转发功能或者是Gmail 的Import 功能同时集中管理几个不同的账号,这样就不用分别去访问不同的邮箱了。那么,转发功能和Import 功能具体怎么使用呢?问Google 啊,要学以致用啊!

另外一种常用的联系方式是即时通讯,比较著名的有QQ、MSN 和Skype 等。目前国内以QQ 为主,一骑绝尘,不过在国外QQ 基本没有。如果你需要和外国朋友经常进行联系,那么Skype 就是首先了。Skype 支持网络电话功能,可以直接利用Skype 拨打对方的电话,而且话费真的很便宜。

我个人在使用邮件和即时通信上各有侧重,如表1-1 所示,你可以参考一下。表1-1 邮件和即时通信的使用比较

这里说点题外话,那就是聊天的风险。Internet 上有一个著名的漫画,那就是“在互联网上,没有人知道你是条狗”,如图1-5 所示。俄国的契诃夫曾经说过“大狗有叫的权利,小狗也有叫的权利。”这里我借用这位大文豪的话,那就是:“大狗有上网的权利,小狗也有上网的权利。”图1-5 在互联网上,没有人知道你是条狗

其实,这些话背后的含义就是:在互联网上,你没有办法确定和核实任何用户的个人信息。这种匿名性使得一些别有用心的人可以利用互联网来达到某些不可告人的目的。

也就是说,如果一个人花很多时间聊天,那么他的目的一定不是聊天来的。这句话有点绕嘴,但是绝对是真的。所以我强烈不推荐大学以前的孩子聊天。就算你长大成人了,我也不推荐你花太多时间聊天。我在最loser 的时候,也疯狂地上网聊天。现在有了一份自己的事业,无论是大是小,都会忙得没时间聊天。这回你明白了吧!当然,我并没有说聊天不好,永远记住一句话,聊天只是工具,带给你快捷、方便,但是别沉迷于此。1.2.3 社交

所有的社交网站背后,都有一个基本的理论,那就是六度空间理论。世界上无论任何人,你都可以通过区区六个人,和它发生关联或者产生联系,这也充分说明了人是一种社会动物,如图1-6 所示。基于这个理论,互联网上出现了一类交友网站,通过这个网站,你可以认识朋友,还可以认识你朋友的朋友。请注意“朋友的朋友”这一点,通过这一点,你就可以不断地扩大你的交友圈子。图1-6 六度空间理论

有一天我实在闲的没事干,想了想如何通过六度空间理论把我和美国总统奥巴马联系起来。首先,我和我们大学的校长聊过天,然后校长出访芬兰的时候,曾经受过芬兰总理的接见,再然后,我猜芬兰总理一定也和奥巴马见过面。你看,还没经过6个人,我就已经和奥巴马联系起来了,看来六度空间理论也并不是浪得虚名啊!

最先利用这一理念的是美国的“脸谱”(Facebook)网站。国内也有非常成功的网站,如人人网和开心网等。我经常使用人人网,主要的朋友基本上都是我的学生和同事。社交网有个特点,那就是基本上都是实名的。

在社交网站上,你可以查找、增加、删除你的好友,还可以发表你的文章、你的照片,也可以发布你的动态等。当然,作为一个开发平台,网站上面还有很多其他的应用,其中最经典的一个应用莫过于曾经风靡一时的在线游戏“偷菜”。

其实,社交网络最核心的一个用处就是帮助你获得有价值的信息,目前,我们面临的问题不是能否获得信息,而是获得的信息太多,让人没有办法甄别。这个时候,从朋友或熟悉的人那里获得的信息相对来说就是有价值的。例如,你可以搜索出很多的饭馆,无论饭馆的介绍有多好,你可能并不是太动心。但是如果一个很要好的朋友推荐说某某饭馆很好吃,你一定非常想去尝试一下,这就是社交网络与搜索引擎最大的区别所在。

我在人人网上的账号是www.renren.com/zhaoyanhrb,欢迎大家加我为好友。我在人人网上主要关注朋友们共享或推荐的文章、视频、资源等。现在互联网上东西太多,良莠不齐。朋友们喜欢的东西,质量还都不错。就像在市场买菜,只要跟住某个老大妈,准能做到物美价廉,这样就没必要再上网去“偷菜”了。最后顺便说一句,我在人人网上也有块菜地,已经荒废好久了。写书我还行,但是种菜实在不在行!

伴着朋友数量的增多,大家的喜好和口味就很难一致和统一了。有些女性朋友经常发一些关于星座方面的东东,而我是研究五行的,这个时候该怎么办呢?作为社交网站的后起之秀,Google+的一个创新是支持把朋友分成不同的圈,圈和圈之间彼此是隔绝的,这样圈内朋友的喜好就更加一致了,大家可以尝试一下。1.2.4 论坛与博客

论坛只是一个电子布告板,你在上面公布一个信息,别人回复这个信息,然后你再根据别人的回复回复,然后别人再根据你的回复回复回复……。

事实上,网络上有很多论坛,有的大,有的小。如果你愿意,你自己就可以就某一专题开一个论坛,但是有没有人来就不一定了。衡量论坛最重要的指标就是他的用户人数,人越多,这个论坛就越火,就更能吸引更多的人,看来“马太效应”真的无处不在。对于程序员来说,stackoverflow.com 是比较经典的技术论坛之一,国内比较火的就算是CSDN.net 了。如果你开发的项目可以开源,你也可以把这些项目放到github 网站上。如果你在以上的论坛和网站上不仅有账号,还有很高的积分和活跃度,在面试的时候无疑会秒杀其他竞争对手。毕竟,简历上所有人都说自己“精通”C 语言,如果想脱颖而出,你总不能说自己“发明”了C 语言吧!

除了纯技术性的论坛以外,还有很多综合性的论坛,如清华大学“水木论坛”http://www.newsmth.net/,我也经常会去关顾。大的论坛还有很多,像百度贴吧等,萝卜白菜,各有所爱,你可以自己去看看符不符合自己的口味。

博客起源于Web log,翻译成中文就是网络日记,然后慢慢的演变成一个词:blog。从名字上看,他应该类似于你的日记,你可以按照日期组织你的文章,在其中发表一些你的生活记录,思想感悟等。blog 类似于日记,但是还不是日记。首先它不追求私密性。其次,很多博客都是有关社会事件的看法和自己的态度,而不是关于自己的生活琐事的记录。这一点在优秀的博客网站中表现得特别明显。如果你每天就是说早上吃了两鸡蛋、中午吃了一根油条等等,估计你的博客也只有买鸡蛋和油条的人看。

与个人网站相比,博客是动态的,而个人网站基本上很少变动。博客的时效性特别强,你可以发表最近经历的事情,你的心情,还可以发布你最近的照片、观点、思想等。而通过一些领域专家的博客,你还可以了解很多业界的动态和进展,所以博客的内容也是多种多样的。

不仅博客的内容多样,而且任何人都可以写博客,只要你的博文质量高,你就会受到关注,就有成功的可能。草根博客中最著名的成功例子就是当年明月,他把《明朝那些事》首先通过博客发表,很多网友非常地喜欢,最后出版成书,成为仅次于毛选的畅销书。不知道你是否看出来了,本书的风格有点模仿《明朝那些事》。这里我借用当年明月的一句名言,“其实C 语言可以写得很有趣。”这也是我一直追求的目标。

坦白地说,发表在博客上的文章的质量要好于论坛。论坛上多为非常零散的只言片语,如果你写得很长,反倒没人看了。所以论坛上经常有“长文慎入”的字样,提醒你如果对长的文章不感兴趣,可以直接跳过。而博客是一段时间的思考和梳理,如果你写得不好,那就没人看了。不过这只是我个人的一点认识而已,并不是绝对地说论坛就不好,论坛上有些文章也非常地有水平,例如,本人曾将在清华水木的家版上发表过一篇文章,进入了十大主题并被斑竹收录到精华区。

无论是论坛上或是博客上的文章,每个人都可以通过回复来发表自己的意见。回复按顺序排列在一个网页中,像一层一层的楼房。所以就有了“楼上”、“楼下”这些专有的指代,同时“楼主”就是指最开始发表文章的那个人了。

有趣的是,论坛上和博客上的文章,回复也各有特点。针对博客文章的回复,相对比较聚拢,基本上都是直接回复楼主,并且和原文章的主题相关,如图1-7的左面所示。而针对论坛文章的回复,则明显比较松散,通常都是针对回复的内容再进行回复,如图1-7的右面所示。这样经过几次回复以后,就已经明显地偏离了原文的主题,变成大家各说各话了。而且无论是国家大事,还是鸡毛蒜皮,大家都会吵得一塌糊涂,骂得狗血喷头。

论坛上这种回复的风格,和酒桌上的风格类似,基本上总要经过和风细语、豪言壮语、窃窃私语、胡言乱语,最后统统不言不语几个阶段。难怪网上有网友说,最和谐的论坛就是成人论坛,所有的回复一律都是“楼主辛苦了!”,“楼主再接再厉啊!”图1-7 博客回复(左)和论坛回复(右)的区别

就我个人理解,博客和论坛的不同如表1-2 所示。表1-2 博客和论坛的不同

我们知道,如果你要发表一篇博客,你需要一台连接到Internet 上的计算机,这就限制了发表博客的时间和地点了。很快人们发现,可以利用手机的短信功能,随时随地发表博客。这不是更方便吗?但是,由于手机的短信限制,每次你只能输入不到200 个字,这种博客就被叫做微博——微型博客的含义,同时也被称为懒人的博客。因为微博的内容通常都很短,所以微博可以通过手机快速地发表和获取,正是有了这一差别,微博的时效性才变得非常好。

微博发表每时每刻的事件,包括热点事件、随笔、灵感等。微博中,你可以follow 某个对象,这样就可以第一时间知道你follow 的对象做了什么事,当然别人也可以follow 你。Follow 你的就算是你的粉丝了。最先提出这个概念的是Twitter,国内比较火的是新浪微博。我新浪微博的帐号是http://www.weibo.com/zhaoyanhrb,目前也有接近1500 个粉丝了。

无论是社交网站、论坛、博客还是微博,他们都是Information Technology 发展的产物。但是,它们更关注的是Information,而不是Technology。从技术角度来说,它们的实现和使用门槛都不高,可以说没什么难度。从媒体的角度,他们完全可以当成一个个人化的媒体,再通俗点,你有了一个自己的电视台。你可以及时地、大声地、不断地发表自己的观点,而且还不用插播广告。有了博客、微博和社交网站,我们的生活已经不再依赖于某一个或两个中心媒体了。每个人都能发消息,而且非常方便,快捷。如果你的话题非常热门,马上这个话题自然就形成了一个中心。就像一场风暴,以前只有一场大风暴,现在是有无数的小风暴,每个小风暴都能形成自己的中心。

也有的学者把目前这种依托于社交媒体,由用户主导生成内容的web 使用方式称为Web 2.0。Web 2.0 的核心概念是互动、分享与关系。典型的Web 2.0 站点有:社区、网络应用程序、社交网站、博客、微博、Wiki 等。目前的研究热点,例如“大数据”等,也与社交媒体有紧密的联系和依存关系。感兴趣的读者可以自行查找这方面的内容。

调查显示,在社交媒体上的自我表达可以促使大脑释放多巴胺——一种让人获得满足感、幸福感甚至是强迫自己持续某种行为特征的神经介质。这或许就是社交媒体让人痴迷的一个很大原因。多巴胺这种东西一般我们会在自己吸烟、喝酒、恋爱、花钱和美食时分泌更多,这回你知道抑制自己使用社交媒体该有多难了吧!1.2.5 夺宝奇兵

有时,我们需要找一本书,或者是一段教学视频等,这时需要通过下载的方法来得到这些“宝贝”。以前无论是利用http 下载,还是利用ftp 下载,其遵循的都是中心节点方式,如图1-8 左侧所示,这种方式有个最大的缺点就是,一旦访问者过多,中心服务器就会瘫痪了。就像是一个最简单的黑客攻击方法,如果大量的用户一起访问某个网站,这个网站就会down 掉了。图1-8 中心服务器(左)与p2p(右)

为了有效解决这个问题,有人在技术上提出了P2P 的概念,如图1-8 右侧所示。这个概念其实很简单,就是每个下载的用户计算机本身也是提供下载服务的服务器。这句话有点绕嘴,我举了例子。比如你和另外一个人都在下载同一部电影。你下载了电影的后半部分,而另外一个人下载了电影的前半部分。这个时候,你们就不再需要中央服务器了,你们两个私下交换就可以了。如果有三个人一起下,那你只需要下载三分之一就够了。与中央服务器不同,P2P 方式下,下载的人越多,下载就越快。这就是P2P 的含义。

从技术上来说,它很完美,但是在法律上,却给侵权和盗版提供了便利。P2P 方式本身就是发散的,没有人监控得了。同时,每个人都可以在网上发布东西,别人又都可以自由地下载。所以,目前国内已经对P2P 软件采取了一些管制的措施。

常见的三种P2P 下载软件分别为迅雷、电驴和bt。他们的区别如表1-3所示。表1-3 P2P三种下载方式的区别

具体使用何种方法下载,我给出三点建议。

• 常用、经典的资源用迅雷下载。

• 生僻、旧的资源用电驴下载。

• 新的、热门的资源用bt下载。

最后一条建议就是,哪个有你需要的,就用哪个下载!这个有点类似于一个经典的调查问卷题目,如果卢浮宫着火,你先救哪幅画?最终拔得头筹的答案是“救离门口最近的那幅!”1.2.6 互联网精神

Internet 是一个大的图书馆,你也可以给这个图书馆贡献你自己的力量和观点,观点本身没有对错,不同的观点才非常的宝贵。如果每个人都热情地参与,那么互联网上的内容才能越来越丰富。互联网上内容越丰富,我们得到的就越多。就像交换苹果,每个人还是一个苹果,如果交换思想,每个人就有两个思想了。所以,互联网精神的第一个重要原则就是积极参与。

感谢网络,让我们坐在家中,就已经拥有了整个世界。无论是提出问题,还是回答别人的问题,都会对你本人有极大的提升。我和这本书就是一个最好的证明,在学校教了两年C 语言以后,从同学们的问题中获益良多,最终决定鼓起勇气写这样一本书。同样,《C Programming FAQs》一书更是直接来源于论坛上问题的总结。

在网络上,大家都是比较欢迎转载的,无论是你的文章被转载,还是你转载别人的文章,都会有更多的人有机会看到这篇文章了。转载其实也是人们对信息的一种选择过程。越好的、越有特点的帖子,被人转贴的机会就越多,但是别忘了,一定要尊重别人的劳动成果,如果是你转载的,你最好注明原始作者和出处,不要硬说成是你自己的。

当然了,最核心的精神就是鼓励原创。别忘了,在你的领域,你是专家。每个人都把自己宝贵的知识、心得、观点等放到互联网上,互联网上的知识才能越来越多,互联网才能变成真正意义上的金矿。

最后就是要注意一下网络的礼仪。网络是自由的,在这个自由的环境中,你应该理性思考,文明发言。语言暴力不会有任何好的效果,只会暴露发言者低下的素质。虽然目前没有什么相关规范规定什么不应该说,但是我有一条建议,那就是如果有些话你不能对你的妈妈和女儿说,那么也不要在网上说。

1.3 熬夜指南

乐学网上我的课程中,我建立了一个在线论坛用来和同学们进行课下的互动和交流。我那些天才的学生们在论坛上发表了一些很好的帖子,本书中有两部分直接来源于论坛中同学们发布的帖子,这是其中的一个。

内容上基本没做什么改动,只是加了一点内容让它读起来更有趣一点。写书和教课一样,没必要总板着脸,以为只有这样才有权威,才有人尊重。人们喜欢你,才会尊重你;人们佩服你,你才有权威。而如果人们只是怕你,大部分只是因为你的位置,怕的不是你,而是你的位置而已。我的话说完了,下面是一条华丽的分割线,分割线下面就是原文的帖子。

------------------------------------------------

天生乐观的程序员,多数都是平时不用功,到了要交付的时候才伴随着最后期限呼啸而过的声音熬夜赶进度,如图1-9所示。所以熬夜这种活动,一定必不可少。图1-9 创作过程

熬夜前的下午,不要吃泡面来填饱肚子,以免火气太大。晚餐应多补充一些含维生素C或含有胶原蛋白的食物,如鱼类、豆类这些。开始熬夜前,来一颗维生素B营养丸,它能够解除疲劳,增强人体免疫力。

熬夜的人,最先想到的就是喝咖啡提神。但是咖啡因虽然提神,相对地会消耗体内与神经、肌肉协调有关的维生素B。更可能形成恶性循环,养成酗茶、酗咖啡的习惯,需要量愈来愈多,效果却愈来愈差。因此,我个人比较推荐喝茶,绿茶很不错,可以提神,又可以消除体内多余的自由基,据说还有些防辐射的作用。熬夜时不要吃太多甜食,高糖虽有高热量,刚开始让人兴奋,也会消耗维生素B,会让人容易疲劳,也容易引来肥胖问题。熬夜时最好的食物是水果。值得注意的是,花生米、杏仁、腰果、胡桃等干果类食品,含有丰富的蛋白质、维生素B、维生素E、钙和铁等矿物质以及植物油,而胆固醇的含量很低,对恢复体能有特殊的功效,绝对是熬夜必备之选。

熬夜时,大脑需氧量会增大,最好隔一个小时到室外做一些简单易行的肌肉放松动作,一方面舒缓筋骨,预防颈椎病之类的;另一方面,可以多呼吸一些新鲜空气,提神又减压。有一个故事是这样的,一民警深夜巡逻,突然对一人大喊:“站住!你说,C 语言中用什么定义一个整型数?”那人回答:“int”。民警说:“你可以走了。”那人非常诧异地问道:“为什么问这样的问题?”民警说:“深夜还在街上瞎逛,一脸苦瓜相,不是小偷就是程序员。”

其实,熬夜时因为要忙着码代码,精神一直紧绷着,倒是并不难受。反倒是熬夜之后,才是真正痛苦的时候,精神萎靡、头疼欲裂都是常事儿。所以,能不熬夜最好不熬夜,经常熬夜有三大弊端:第一,记忆力越来越差;第二,数数经常数错;第五,记忆力越来越差……

1.4 程序=数据结构+算法

程序员首先要有自己的想法,而写程序只是为了实现自己的想法而已。

而程序员的想法就是用数据结构+算法来描述的。如果程序是一个人,正确的数据结构就像是强壮的体格,高效的算法就像是高尚的性格,而语言,只是一件外衣而已。不同的场景,你会穿不同的外衣,而且外衣可能还有一定的流行趋势,但这些真的不重要。

纠结于语言的程序员,就像是只关注外衣是否漂亮的小姑娘。凡是能够流传千古的作品,你会发现都是不穿衣服的,如图1-10 所示的罗丹的思想者;更有甚者,不仅衣服没有了,就连两个胳膊都是多余的,如维纳斯。图1-10 就是因为熬夜,我的衣服忘记放哪了1.4.1 数据结构

数据结构是任何计算机专业的必修课,但是目前有些程序员越来越不重视它。不重视它并不是因为它不重要,而是目前市面上两种主流的面向对象高级语言C++和Java 中,都包含比较完整的基本数据结构的库实现,它们分别是C++中的Standard Template Library(STL)库和Java中的Container类。对用户来说,只要直接拿来使用就可以了。

为了使某种特定的数据结构能够支持所有的数据类型,C++和Java 分别使用了两种泛型技术,分别是C++的模板技术和Java 中面向对象的继承技术,如程序1-1所示。

在Java中,所有的数据类型都继承于Object,同时ArrayList 支持装入任何继承于Object 的数据类型,用一句俗话讲就是:“ArrayList 是一个筐,乱七八糟都可以装。”不过需要注意,从ArrayList 中取出数据的时候需要转换回正确的原始类型,如果没有转换回原始的类型,运行时就会出错,同时转换也有一定的效率损失。

程序1-1 C++和Java 的两种泛型技术

1 /*java实现*/

2 ArrayList List = new ArrayList();

3 List.Add(1);

4 List.Add("string"); /*正确*/

5 /*C++实现*/

6 vector<int> v1;

7 v1.push_back(1);

8 v1.push_back("string"); /*错误*/

C++的模板技术就没有类似的问题。你在声明一个vector对象的时候,必须如程序1-1 中第6行所示,指定它要保存的数据类型为int,以后这个v1只能存入你指定的数据类型int了。对于模板技术,C++的STL无疑是模板技术的杰出代表,目前它已经成为C++语言标准的一部分,可见确实不同凡响。对于STL 有三层境界,第一层为会用[6]STL,大家可以参考《Effective STL》。第二层为明白其中的原[7]理,对应的参考书为《STL 源码剖析》。借用书中的一段话为:“源码之前,了无秘密”,确实如此。第三层为能扩充STL,这个层次就需要你自己来写本参考书了。

关于泛型技术的模板实现和继承实现,也有很多优劣的争论。吵架这种事通常我都会躲得很远,这次我依然不例外。值得注意的是,新版的Java 也支持模板技术。你需要根据特定的场合来决定使用哪种方法。

有趣的是,当有人在热烈争论模板好还是继承好的时候,还有些工程师却在认真地思考,最终他们写出了这样的C++语句:class String: public Array<char,String>。这种混合使用继承和模板的技术

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载