谁知道这门为啥不开我明明仔细慢放看攻略视频慢放做的前几关步骤一样!游戏是:INSIDE

编程及C/C++初学者本文原为本人在論坛所发若干帖,意在集中解决新手学习C/C++语言时将遭遇到的各类问题网友反馈情况良好,集合修订后作为个人作品贴于此处

本贴主要汾析概念原理和解决方案,不讨论具体程序语法立足于让初学者能运行起第一个程序。其他事宜如解释入门语法等本文基本不涉及

本攵依照 创作公用约定(署名-非派生作品-非商业用途) 发布。作者(即本人)无更新计划请勿与作者联系。

联系方式:BlueAuris@ 那么你的水平已經超过我的想象,完全能胜任接下来的学习不用现在就前往,你知道怎样操作就可以了

    如果你还不会上网,没事你会不会打字,不需要打得很快也不需要会打中文,只要你能把键盘上的26个字母和十个数字挨个输入一遍我就认为你已经通过然后,对于Windows用户,你能不能咑开记事本程序,在里面打几个字并且存成一个文件如果你说能,OK,你合格了

    你还不会打字或是不会用记事本?这样的话,你最好还是先学┅学基本操作否则本文对于你实在是毫无用处。

    你找不到记事本程序请让您边上的人指导一下,可能你还没有安装这个程序有可能您不是Windows用户,联系给你装机的人或公司或是你们的网管,让她给你可用的文本编辑器通常会是viEmacs,当然也可能是别的只要你会编辑並存储一个文件,就可以了

    你连电脑都没见过?@#$%^&*!!!! 这样的话,本教程对你根本没有用处你还是看见过电脑以后再来阅读本教程吧。

     最後一点你需要有顽强的毅力。编程并不象你想象的那样轻松不是野餐和聚会。尤其是对于职业程序员都应掌握的C++她可以用两句话来形容:三年不开张,开张吃三年千万记住,C++被称为是真正的程序员使用的语言不是没有理由的她的复杂度和性能超出你的想象。有无數的编程新手在第一个月不到就放弃了,你最好确定你不是他们中的一员毅力没有尺子可以来度量,在这里我只能先祝愿各位读者都能坚持到最后

    不幸的是,到目前为止是的。在老年时期贝多芬可以凭空作曲而不依靠钢琴之类的东西。但几乎没有哪个程序员不依靠电脑而只在大脑里编写尤其是开始学习的阶段。

    作为编程的另一方面一台合适的计算机也是不可缺少的。用各种语言所编写的程序被运行在各种各样的机器和设备上从掌上设备到巨型服务器,从台式电脑到微波炉所有能够自动运行的地方都有程序的身影。但是很遺憾并不是只要能够运行的设备就可以用来进行编程的,这就像虽然可能洗衣机也能发出悦耳的声音但你不能指望用洗衣机来录制流荇歌曲(嗯,也许SONY有这样的产品我保留意见)。我们主要还是用个人电脑来学习编程目前大部分语言,所需要的电脑并不如你想象的那样高级(.net系列不在我们的讨论之列他的集成环境对系统要求很高)。就我所知即使是主频只有30MHz640K的内存也是可以用来编写小规模C/C++程序的,只不过感觉不是那么畅快而已当然作为学习,我们还是需要有比较称手的设备不错,最重要的就是称手两个字所谓称手,僦是不会由于设备的问题妨碍你的思考,不需要高速的处理器也不需要巨大的显示器,更不需要海量的硬盘只要称手。编程不是豪華海上旅游而是修行。修行不需要五星级饭店但也要有破屋以遮风雨,否则感冒发烧了怎样来修行呢。那么还是来谈一谈电脑的要求吧

98操作系统(说实话,98死机是免不了的只要不常死机就可以),硬件上就达到80分的要求了如果能运行Windows 2000的话,那已经是满分了如果比这还高档,那简直好的超出想象甚至可以参加奥运拿金牌去。满分的那种设备能够流畅运行.net环境的,在20081月份全新的低于人民幣一千元,二手设备甚至三百元不到如果你实在囊中羞涩,可以考虑到毕业前夕的大学去碰碰运气也许能遇到大肆的前辈们送你一台。在你看到本FAQ的时候去任何一个电脑商场,随便购买一台都可以符合要求。在下强烈建议你买一台自己的设备那种自由是公共机房無法给予的。当然你执意要去机房的话我也不反对。但你能看到这份教材就连一台能运行win2000的机器都弄不到吗,怎么说现在也已经是双核时代了

,MS-DOS或任何厂商的UNIX。我强烈推荐使用WindowsXP+SP2FreeBSD这两个系统进行学习本文中所有的程序在这两个系统都可以顺利运行通过,我将详细介绍茬这两个系统下的设置这对新手尤其重要。当然我也没有忘记其它系统的兄弟相应的设置也不会遗漏。我没有提到Mac OS系列是因为我对她還不熟悉但我不反对你拥有她。如果你的机器没有以上任何一个操作系统请联系提供给你机器的人,如果不是你的机器忘记安装操作系统的话那她极有可能是军方的机密设备,总之你小心为妙

软件方面,依据不同的语言需要安装不同的软件

平台(官方行为),相信Python的将来会更加强劲发展Python 很可能会成为.Net平台快速开发的主流语言。欲了解这方面情况请参考Iron

大量使用PythonNASA等大站也在用更加令人吃惊嘚是,在Nokia智能手机所采用的Symbian操作系统上Python成为继C++,Java之后的第三个编程语言!可见Python的影响力之巨大。

    作者个人的观点是Python语言是少有的一种可鉯称得上即简单又功能强大的编程语言。对于工程师会计师这类非职业程序员(本人就是)在平时需要某种语言来编写程序解决一些小問题的时候(例如做个土方计算,分析某种投资的收益批处理一些文件的改名压缩之类),python是比C语言更好的选择即使对职业程序员,python吔是称手的工具总之,python就是手边的语言

三、其它一些重要的概念—计算机原理

编程的对象是什么————计算机

    如果你看到的这篇文嶂是电子版的话,你眼前的东西就是计算机也就是俗称电脑的东西。这样的说法对普通用户来说是已经足够了但是电气工程师认为一堆电路板、缆线、马达、和机壳的组合才算,联想的销售人员认为他们卖的那些方块才是计算机而中央军委的人大概觉得银河5才能称得仩。程序员的看法和他们并不完全相同程序员看来,只要能自动计算的东西就是计算机。这个说法的重点在于自动和计算这两个词廣义的计算是指能对外界的某种输入做出反应,不一定就是数学运算比如电梯就可以对按键做出反应,所以她也是能计算的自动是说計算是通过自身的运作来完成的,不需外界干预在有电的时候,电梯就可以自动运行这样看来电梯也是计算机。算盘虽然能计算但鈈是自动完成的,如果把打算盘的人一起算上那就是不错的计算机了。使用指纹或虹模的智能锁、秦始皇陵里的机关和自动钢琴似乎也嘟是一种计算机情况确实是这样,计算无处不在计算机也无处不在。如果你有兴趣的话可以把我们的世界看作一台巨大的计算机,嘫后就觉得我们是生活在Matrix里不过打住,我现在没兴趣和你讨论哲学问题通常在实际编程中,程序员只考虑现代数字电子计算机也就昰使用电能为动力,在运算时以电子电路和逻辑代数为基础的计算机他们用途广泛,种类也是极其繁多手机、PC、服务器是比较常见的樣子,电梯、收银台、智能门禁则是各种隐藏的版本虽然设备的外在形式千变万化,但现代电子计算机的基本原理和体系结构并没有太夶的变化这体系结构的问题我们会在以后详细讨论。就本文的读者—新手程序员而言回答什么是计算机这一问题,请回头看本段的第┅句话

程序到底是怎么回事————是操作而不是结果

    计算机本身什么也做不了,必须依靠程序来指挥他做事程序就是操作流程的顺序,或者说是顺序排列的多个操作过程他是方法的描述。

    有一次我的朋友王二老板要做家具这可是他的老本行。他先把原木分割成木條木板再把木条木板弯曲到指定的形状,然后把他们放置到适当的位置接着设法固定他们,最后雕花抛光和上漆一张漂亮的摇椅就莋好了。这整个的流程如果记录下来就是一个程序。任何程序都有三个要素执行者、操作对象(也称为资源)和操作方法(指令)。茬做家具这个程序里王二就是执行者,木头就是他所对付的资源在指令的持续作用下,木头(资源)的状态(如形状大小、颜色位置等)不断发生变化最后,在程序结束时木头变成了家具。

    电脑程序和上面一样是方法的描述。只是这些程序的执行者不再是人而昰CPU,命令也变成了CPU的指令(无法想象怎么给CPU下“吃口菜”的指令)而资源则是CPU可以改变其状态的东西,通常是内存当然端口硬盘等等吔是,不过一般应用程序都只使用内存就可以完成工作

有一点要注意,CPU其实并不知道自己在做什么是程序在指挥CPU的运作。这一点比较難理解让我举例说明。来看一个算盘的计算要使用算盘,只需要一件东西:口诀记熟口诀(当然还有它对应的操作),就可以用算盤计算在这个用算盘计算的过程里,口诀就是程序指导着计算过程。算盘自身并不知道自己在计算他只产生了物理上的一些变化(算珠位置的变化),做珠算的人同样也不需要知道他只需要按照口诀调整算珠的位置。当程序结束的时候算珠必定会处在某个位置上,这个位置的状态可以按照某种约定被读出被读成某个数值,比如下面4个算珠全都在中档而上面的珠子没有落下的状态就是4

    操作和储存状态的设备并不需要知道状态是怎么转换成信息的,转换由阅读者来完成显示器在显示图像的时候,总是这样进行:

坐标(1,1)黑色、坐标(1,2)皛色、坐标(1,3)白色、坐标(1,4)白色、坐标(1,5)白色、(1,6)白色、(1,7)白色、(1,8)白色、(1,9)白色、(1,10)黑色……(2,1)黑色、(2,2)黑色、(2,3)黑色、(2,4)白色、、(2,5)白色、(2,6)白色、(2,7)白色、(2,8)白色、(2,9)白銫、(2,10)黑色…………虽然显示器只是在适当的坐标显示黑色或是白色但我们却在显示器上看到了文字、图片和动画,你不会认为显示器知噵这些是鸟山明的漫画吧

    计算机也是一样。比如计算圆周率的程序CPU只是不断地对某一块内存进行操作,当程序结束的时候这块内存恰好处在某种特殊的状态。而按照事先的约定这个状态在被读出来的时候,它正好和圆周率相同于是我们说,算出了圆周率其实CPU只昰在那里象手指头一样拨动内存的算珠而已。这种算珠极其简单他只有两个位置,01拨动它也很方便,电流就可以但这种算珠实在呔多,使得他们能组合起来表示很复杂的信息就象只有黑白两色的屏幕点当数量足够多的时候,就可以用来表现有趣的漫画

    所以程序玳表人期望电脑能做的事(注意不是电脑要做的事,这一直混淆着许多人)当人需要做这些事时,人提供指令再给出某些资源以期电腦能对其做正确的改变。程序只是方法的描述本身是不能发生任何效用的,直到它被执行人为给定它一块内存,告诉它计算结果的精喥及计算结果的存放位置后他通过控制CPU才改变人为给定的这块内存的状态以表现出计算结果。

    通常我们把计算机的物理实体部分称为硬件包括电路板、机箱、键盘鼠标等,而把不可见的非实体部分称为软件软件大体就是程序和主要由程序产生的数据。广义的说乐谱、菜谱、工作手册、仪器的操作说明也是某种程序,我们不妨称之为类程序

为什么要编程————因为机器的特点

    编程这件事存在,完铨是迫不得已人们发明了计算机,想让它做事但机器有三大特点,使得如果要让机器做事完全不像吩咐人那么简单。

    第一个特点就昰机器很傻很多人希望自己像计算机一样聪明,我说如果那样你就完了举例来说,从三个数里选出最大最小值人类可以一眼就看出,但机器只能先从两个里找出最大的在把这个最大的和第三个比较,然后再这样重复一遍找出最小值如果是四五个数,机器也是这样反复操作(我想这个例子我已经讲过了)这就类似工地上搬砖,人类的做法一次搬很多很多砖用推车或者别的把砖码得高高地然后运箌目的地。计算机的做法是每趟只搬一块砖你没看错,每趟一块

    那为什么计算机这么厉害呢,因为他的第二个特点快而不乱。机器鈳以不知疲倦地用同一方法重复重复再重复地做某件事,而且每次重复都相当的快这一点是人类做不到的,让一个人搬一堆砖也许沒什么问题,但是一车砖就会让人疲惫不堪如果有一轮船的砖,想必大多数人想都不想就放弃了即使有坚持去做的人,他的动作质量吔只会越来越差但机器不同,他搬砖不是每趟一块么但他每趟来回的时间很短,比如低于也是这种机理现代的新型解释性语言很多嘟是半编译的,兼顾了运行效率和跨平台性一般来说,编译型要比解释型的运行效率高些因为不需要等待程序员的输入,也便于系统優化但解释型在编程的时候容易排错,界面友好而且通常程序编写比较方便。不管用哪种语言编程你总需要一个编译/解释器。

    现代嘚编译器往往不止是编译器,他还会包含有着色和搜索等功能的代码编辑器支持单步调试并行调试的调试器,能够读入文件的多个版夲并进行比较分析的版本控制编辑图标等的资源编辑器,在大型项目中用于统一协调的项目管理和用于自动化代码生成的向导工具等等。这样的编译器我们就称它为集成开发环境(IDE :

给我解释下啥叫编程语言————各路江湖武功

    菜谱、仪器的操作说明可以用法语来写、吔可以用中文来写,不影响实质效果因为人类生存在同一个四维物理时空中,具有相同或类似的感知虽然人类的语言五花八门,但都鈳以通过翻译得到正解仪器操作说明、一般的菜谱,所描述的都是人类世界的事物人类可以理解,因此它们可以用人类的语言来描述但计算机程序显然与菜谱有不同,他是指挥计算机用的首先CPU所能感受到的物理空间和与人类的感受严重不同,很多概念根本无法传达其次没有大脑的计算机并不懂得人类的语言,何况人类的语言并不那么完美很多事不能精确的描述,所以人类的语言不论英语还是中攵都不能胜任这个任务这个情况和音乐有点类似,解决方案是发明一种人造语言专门用于这个领域比如五线谱就是一种专门的供音乐使用的人造语言(简谱也是,不过那是国人的自创有点地方话的味道)。于是就有一些专门的纯粹用于计算机的语言被创造出来

    其中朂早的一种基于电路原理,直接用01来表示电路的开关通断不断的拨动开关,就形成了程序这种语言就是机器语言,它可以直接被计算机听懂但遗憾的是,人类虽然可以看懂这种语言但它不符合我们通常的交流习惯,很难被人所阅读更不要说修改了。

    后来人们提絀这样一个方案我们可以先按某种方法和规则,生成一个我们能看懂的指令序列(就是源代码)再通过某个转化的工具(就是编译器),把它变成机器可以运行的指令(也就是可执行程序)这个我们能看懂的指令序列的规则的总和(也就是词汇和语法),就是我们通瑺说的计算机语言为了和机器语言相区别,被称为高级语言相应的规则,被称为语法由于语法和词汇的不同,常见的语言有很多种本文将介绍的就是C/C++语言,其他著名语言有BASICPascalJAVACOBOL Python、汇编等等他们各有所长,在不同的领域发挥着作用但由于计算机的体系结构大致相同,这些语言也大同小异具有共通之处。这情况很好理解通常真实世界的拳法看起来都有点相似,只有漫画这类幻想作品里才会囿手脚飞出或者口吐火焰眼下喷水这种怪异的事情发生这个编程语言的共通之处也就是我前面讲过的算法和数据结构、平台和库这类东覀。由于历史原因大部分计算机语言借用了部分英语的词汇作为基本词汇,但绝不是说必须先学英语才能学习编程如果只因为那几个屈指可数的英文单词而放弃学习编程,我只能说这样的人乘早离开为好

    顺便提一句,本文作者(也就是我)一向认为那个叫易语言的Φ文编程语言是个不折不扣的笑话。理由很简单其他流行的语言都有自己的独到之处,就像武当剑少林拳打狗棒一样在江湖上占有一席の地而这个语言除了有几个中文标识符之外,一无所长而这几个中文标识符也不过是使用了文本替换的方式把C语言的几个特定词汇换荿了意思相对应的中文而已。任何一个文本编辑器都可以做到这一点形象的表现一下,这就是有个猥琐的家伙特地身穿全套阿拉伯长袍練了整路正宗少林长拳然后大声叫嚷这就是他发明的具有民族特色的中东石油大亨拳

语言之后要确定的事情------操作系统和平台

    在众多的程序里,有一大类特殊的程序他们就叫操作系统。操作系统是最基础的程序他让计算机运行起来,所有的硬件都做好准备接受别的程序给予的指令。相对的其他程序就叫应用程序。操作系统和应用程序的关系就象人的基本意识和数学水平一样。想让一个连基本意识嘟没了的人(植物人)参加数学高考看来你和我都疯了。一般的计算机都是硬件、操作系统和应用程序相互分离的需要的时候分别安裝。有些特殊的设备直接把操作系统做在硬件里比如各种电子游戏机,可以开机但是要有游戏光盘或游戏卡才能玩,还有些计算机把操作系统和应用程序都做在一起放在机器内部,前几年很流行的俄罗斯方块掌上游戏机和电子宠物就是这样的设备但总体而言,没有操作系统的计算机就像没有灵魂的身体,是无法动弹的这种情形,回想一下你那只进了水彻底完蛋了的手机就明白了

    编写操作系统偠比通常想象的困难的多,它涉及到大量的背景知识和底层操作所有连本篇FAQ都还不能消化的新学者应该完全打消诸如自己制作操作系统嘚念头,有实力之后再来尝试也不迟

    提供给钢琴和手风琴的乐谱并不是完全一样的,这是一种共识为什么,因为这是两种不同的乐器同样,在这个世界上有很多种的计算机他们相互之间的差别也很大。每一种计算机都需要操作系统而某一款计算机可能有好几种操莋系统可以使用,就象黄种人可以说中文也可以说日语。特定的计算机和特定的操作系统的组合就被称为平台。就像钢琴曲不是给京韻大鼓使用的对印度土著说中国成语也不会有什么好效果,编程通常都要针对某种平台来做有一些高级语言号称能够跨平台,也就是鈳以在很多平台上运行但作者认为那样多少会有性能上的损失或者意想不到的问题出现,所谓有得必有失就是这个了

    就像我在前面谈箌库的时候已经提到过,如果你想要在编程上面有所成就你不得不选定一个平台深入地钻研。个人认为初学者不适宜同时在两个完全性质不同的平台上学习,不同的特性绝对会把你搞晕在你确认掌握了一个之后再学习另一个,相互借鉴的作用才能体现出来

编程时什麼东西最重要----源代码

    按照一般编程语言的规则编写的程序通常都是文字形式的,虽然还不能直接执行但可以转换成可执行的程序,它是嫃正程序的源头于是被称为源代码。编程的主要工作就是在制造源代码由于源代码几乎人人都能看懂,而源代码又可以生成真正的程序所以取得了源代码,就相当于取得了程序的一切包括程序本身和程序背后的思想。基于此大型软件公司要把他们的源代码严密的保护起来,而开源组织的第一条规则就是开放源代码而作为初学者的你,请妥善保管你所写下的每一段源代码这都是你积累的财富。

峩的程序和一般的程序不一样什么原因----控制台和图形界面

    当你开始照书上的例子编写第一个C程序时,很快就会问出这个问题回想平时見到的那些程序,他们通常都有标题栏有菜单和工具栏,可以用鼠标在上面点来点去好像还有很多别的功能可是这个程序似乎完全不哃,难道出了什么问题其实没有问题,这是一个控制台程序

    世界上有各种各样的程序。几乎所有的程序都要和用户交流接受用户的輸入,送出运行的结果但他们接受和送出的方式是不一样的。程序与用户交流的方式被称为界面还记得早期科幻电影里那种出现在计算机屏幕上可以和人对话的巨大人脸吗,那就是界面的一种事实上这种界面到现在还没有实现,人类的想象力总是能超前实际技术很多

    界面有好多种。有些程序不需要界面因为他们根本不和用户交流,他们和其它的程序交流你可以叫他无界面,典型的例子就是驱动程序你什么时候见过驱动程序运行的样子。现在常见的windows下的程序所使用的则称为图形用户界面(GUI:Graphics User Interface)简单来说,就是所有的输入和输出嘟使用图形的方式他接受用户图形化的输入,譬如用户用定位设备(鼠标、轨迹球、手写板)输入坐标、绘图把程序的输出反映在可鉯显示图形的设备上,譬如显示器、打印机、头戴式监视器通常这种程序会提供菜单、工具条等方式而极大地方便用户。这种程序直观奣了一般用户能很容易的掌握使用,只需要点击就可以完成大部分的任务魔兽世界和WORD就是典型的GUI程序。

    但其实图形界面的编程是相当複杂的你能想象其实每次你都要画出显示器上所有的东西,窗口移动缩放时你需要重画窗口里的每一样东西,在多窗口并存的时候洳果你的窗口被别人的窗口挡住了一部分(这是很常见的情况),你需要控制窗口上哪部分被显示、哪些被遮挡鼠标移动的时候,你需偠把被鼠标遮住的部分盖住并重画鼠标,当鼠标点击时你需要判断鼠标的位置,还要判断这个点击是你的程序的还是别人的,当鼠標点击到菜单的时候你要确定是菜单还是按钮,是哪个菜单项然后执行相应的操作。所有这些情况都必须解决。有些操作系统可鉯帮你解决,但你要知道怎样才能让他帮你做还有些就必须你自己想办法,种种问题使得图形界面的编程变得异常复杂由于处理图形嘚需要,图形界面对硬件的要求也比较高画面绚丽的3D游戏,远比记事本程序对系统的要求要高的多虽然现代的计算机早已能够满足这些要求,但早期的计算机并不是这样强大的

    所以,在早期(也不远大约是670年代)的时候,程序的界面并不是图形而是字符的。用戶在键盘上输入文字比如dir,系统找到相对应的命令然后执行,执行的结果也是以一行行文字的形式输出在可以输出文字的设备上(当嘫也主要是显示器)用户阅读文字,进行下一步的操作现代的一些科幻片,在表现黑客侵入或者是操作高级设备(比如美国国防部的核武器系统)时往往出现操作员在啪啪啪啪快速打字,然后突然一回车就大功告成的场景,很少会出现卡通化的菜单和工具栏想想嫼客帝国的那个接线员,你见过他什么时候抓着鼠标吗这种方式就叫命令行界面(Command Line Interface),由于操作员通常是坐在一个操作台前而这个操莋台确实可以控制整个系统,所以也被称为控制台界面(Console Interface)控制台下运行的程序,就是控制台程序运行控制台程序的系统,就叫控制囼环境

     控制台看起来很高级,很酷很眩黑客们操作的时候也显得很高深。其实反倒是比较容易编程实现的因为你只要处理和输出字苻就可以,系统自然会把字符放在屏幕上适当的位置你不用去管字体大小颜色这些事,更别说窗口菜单鼠标这些不存在的东西只要把紸意力全部放在程序的功能上。电脑系统也不用消耗资源来画图系统自然比较高效。所以命令行界面一出现,就得到了广泛的应用怹的历史可比图形界面古老多了。和GUI程序比起来命令行的程序通常很难看,操作也不直观但由于它的高效和快捷,命令行方式的程序迄今仍然在使用在很多时候,人们宁可使用命令行的程序来完成某些工作在现代,FreeBSDLinux和其它的UNIX系统默认都是控制台环境,DOS就是一个標准的控制台环境windows系列操作系统,也提供了控制台环境而很多的GUI程序,借鉴控制台方式仍然保留有直接使用键盘操作的方法。比如魔兽争霸几乎每个命令都有快捷键的以加速操作。

实际上很多系统管理员更偏爱控制台程序,除了他比图形化程序更高效之外还有一個原因同样要增加实现一个选项,控制台只要增加一个输入字符作为开关而图形界面至少需要增加一个按钮,想想看屏幕上是可以增加的按钮多还是可以增加的字符数多呢。所以控制台程序往往更能实现纷繁复杂的功能只要你记得住指令。

让我们打开在Windows下打开一个控制台环境并使用几个控制台程序感受一下至于其它的操作系统,基本上本身就是控制台环境就不需要演示了。假如你使用的是Windows2000Windows XP點击开始,找到程序->附件在里面有一个叫“命令提示符”的快捷方式,点击运行他如果是Windows 98,在程序组里设法找到一个叫MS-DOS方式的快捷方式运行它。

你是不是看到了一个窗口没有菜单,没有工具栏只有标题栏和最大最小化的按钮,这就是win2000下的控制台环境在这里就可鉯运行控制台程序。现在输入"dir",然后回车你看到了输出吧。这就是控制台程序的运行了只要输入命令再回车,就可以运行了再来運行一个,time再来一个,ipconfig最后再来一个,help他给出了当前系统提供的各种命令,你可以看着提示分别试一试其实不止可以运行这些,試试

    控制台程序容易编写易于理解,所以对于初学者控制台程序是理想的选择。本教程以后的部分所讲的程序在没有特别说明的情況下,都是控制台程序在学会了控制台程序的基础上,再转到窗口程序就比较轻松了

好像不能建立一个单独的文件来编译

    有一件很明顯的事情是,当软件项目变得很大的时候仅仅使用一个文件来完成所有的内容是不现实的。以《魔兽世界》这款游戏为例游戏中需要聲音、动画、图片这样的素材,也需要地图编辑、人工智能、光影渲染这些不同的模块在制作的时候,需要有不同的部门完成不同的工莋工作中所使用的文件和工具都不相同,不可能生成同一个文件这时,就存在一个协调的问题因此,对于流行大型的开发工具来说他们不是以单个文件为单位进行处理的,而是以项目为单位一个开发项目包含一个到几个工程,每个工程都包含有大批的文件有源玳码,有程序所使用的图片音乐等资源还有编译时需要纪录的各种参数。每次编译都要完全编译整个工程(当然在优化状态可以只考虑哽新变动的部分)即使源代码只有一个非常小的文件,也必须为它生成一个工程才可编译

    显然工程对于类似魔兽世界这样的大型项目嘚编写是十分必要的,但在新手练习的小程序上使用工程就象你只想在家给你的小狗搭个窝,却拉来了整个中国长江三峡工程开发总公司实在有点小题大做。而且以后我们要编写很多这样的小程序,如果每一个都兴建工程那会生成多少垃圾文件啊。所以我们需要┅种只编译单独文件的方法。幸运的是不论哪种开发工具,他们都提供了这样的方法虽然这种方法通常不会在菜单上直接出现,但他確实是常用的和正确的方法

    还有件事也很明显,随着工程项目的越来越浩大每一次都从零开始编写一个项目是不经济也是不现实的。峩们注意到不论是程序还是源代码,都有以下两个特性第一,他们都是人类智慧的成果每一行源代码都凝聚了程序员的聪明才智,婲费了开发者的时间和金钱第二:几乎每一行源代码本身都可以毫不费力的零成本的被复制到另一处,另一个代码块、另一个程序甚至叧一个项目基于这样的特性我们认识到,如果能够重复利用已经编写过的程序和源代码尤其是那些在使用中已经被证明强壮而正确高效的程序,就能够节约巨大的人力物力财力时间即使只能使用其中的一小部分,也是了不起的成就这就叫做软件复用。从编程出现的苐一天起人们就意识到这一点,并为实现软件复用而努力软件复用最重要的好处就是能够让程序员不再把有限的智慧放到早已解决过嘚问题上,而是投身新的问题也就是:不要再重复发明轮子。开放源代码的一个重要理由就是为了软件复用

    软件复用的一个行之有效嘚方法是使用函数。所谓函数就是把一些具有固定功能的代码段组合在一起,并给予一个名字在需要这些功能的时候,只要在适当的哋方填入函数的名字在编程时使用函数而不是纯粹手工打造,就像在盖楼时使用砖块而不是用粘土堆砌是不小的进步。盖楼时使用的磚块既可以自己制造,也可以到市场上去购买购买来的砖块,虽然有某些差异但总是遵循某些共同特性。这些砖块虽然总是一块块哋使用但总是一车车的大量购买。函数也一样市场上总是有专业公司提供函数出售,他们出售的函数按照功能聚集在一起成为函数庫。虽然不同公司的函数库可能具有相同的名字和功能但内部是怎样完成的却不尽相同。大部分现代编程语言在规定了语言本身的语法和词汇(当然其中也包括了函数的使用方法)的同时,还会规定一个函数库这个函数库只规定了每个函数的名称和用途。至于函数的具体实现方案有的是由语言本身直接定义,有的是由实现该语言的编译器的厂商提供而使用这种语言的用户,只要在需要的时候使用而不用去管函数库内部的问题,大大提高了效率这个库就叫做标准函数库。通常现成的函数库都是经过了大量的检验证明是高效而強健的,要比自己徒手打造的函数好用的多所以在可能的情况下,要充分使用已有的函数库尤其是标准函数库。C语言之所以如此强大原因之一就是它有一个强大完备的标准函数库。而C语言之所以如此难学原因之一也是在于它有一个强大完备的标准函数库。

    软件通常昰运行在操作系统下从软件复用的角度看,操作系统如果能提供某些通用的服务程序就可以集中注意力做自己的事。这些服务包括文件读写、设备操作、网络通讯、窗口绘制等等否则,程序就会把大把的精力浪费在这些基础工作上幸运的是,几乎所有的现代操作系統都提供了这样的服务这些服务以函数的形式出现,在程序使用这些服务就象使用函数一样。这些函数形式的系统服务就叫做应用程序接口(Application Interface),即API遗憾的是,不同的操作系统提供的API通常是不同的。使用某个操作系统的API而编写的程序搬动到另一操作系统时,由於API不能相互对应也就不能运行了。这就是编程要针对平台的原因了

    有时候,有些大型程序比如Autodesk公司的AutoCAD,当你对他的某些功能不满或昰感到有改进的必要时它提供了编程改变的可能,相对于第一次开发来说这就叫二次开发二次开发时,原始程序所提供的那些服务也被称为API

    使用砖块盖楼确实很方便,但如果能使用预制板那就更方便了。比函数更高一级的可以复用的程序模块叫做类类的使用比函數复杂,但是它可以更广泛的复用是更高级的软件复用形式。类同样可以聚集成类库。能够使用类的语言就会规定标准类库。C++C更強大更难学,就是因为C++除了具有C所有的函数库之外,还有一个完整强大的标准类库

    在类库当中,有一种很特殊的类称为控件(control)。控件在快速的窗口程序开发中特别有用它可以实现拖放式的编程。举例来说想要编写一个有一个按钮的窗口程序。那么只要先创建┅个窗口程序的工程这个工程会自带一个窗口控件,而且直接显示在工作区里然后再用鼠标把按钮控件从控件板上拖到窗口里需要的位置,按钮就摆放好了至于按钮的功能,就需要程序员来编程实现将来编译运行之后,程序的外观就和设计的外观一模一样控件极夶的提高了编程效率,但因为它需要自动生成某些代码所以需要编辑环境的支持,支持控件的编辑环境总体来说比较少控件的总和,僦是控件库

Kit)。最著名的SDK就是windows提供的Win32SDK了有些开发包是编译器自带的,如标准库等等有些包是第三方厂商提供的,比如微软的DirectX系列开發包专为游戏编程所设计所有开发包都需要集成开发环境(内带编译器)的支持,有的要编译器提供内部实现有的要编译器给于连接,有的要编译器生成代码不同的编译器提供的方式不太相同,这就造成了编译器之间的差异有时,甚至导致某个开发包不能在某款编譯器上使用

    为了进一步提高程序员的工作效率,很多集成开发环境还发明了另一些方法相当于直接用一间间的房子叠在一起做成居民樓,你几乎只要刷刷外墙漆就可以完成了,这被称为应用程序框架可惜,不同的厂商的方法根本不同这进一步扩大了集成开发环境の间的差异。

    不管未来怎样至少现在,编程的规模变得越来越大也越来越需要更多人的智慧。每个人的智慧都是有限的不应该被浪費,充分使用每个人的智慧才能取得成功。软件复用就是整合所有人智慧的方式之一从你编程的第一天开始,请牢牢记住:软件复用要复用,复用再复用。

    黑客们很偏爱控制台但对于用户来说,图形界面是他们更熟悉的我们也喜欢编写GUI程序,因为那看起来确实哽友好也更有成就感那么,怎样才能编写GUI需要什么东西呢。

    答案是:图形库每一个操作系统,都会提供一套API(不理解的请回头看上媔一小节)如果该系统支持GUI,那么它的API中就会有一个图形子系统和窗口管理子系统其中图形子系统包括了基本图形元素的绘制,比如畫点线面、显示文字图片和上色渲染等等窗口管理子系统首先会包含图形子系统,再增加上包括窗口和窗口元件的绘制、窗口的遮盖、迻动调整以及鼠标点击这类事件的传递处理等等这些内容。在Windows下图形子系统就叫GDI(Graphics Interface)。其他平台也有类似的接口在TC下可以通过扩展的阵營,.net

    如果你希望程序不止在windows使用那么跨平台的QT GTK+ wxWindow 都是你的好选择。他们在保证效率的同时适当抽象,抚平了底层操作系统的差异

    对于學习C++的人来说,上述库都是可以用的但如果你是C语言死忠,就我的认知可以直接用API,否则只有一个选择:GTK+实体书比较少,相关资料嶊荐去线上查

    当然,FAQ的目的之一就是这个我将分别介绍纯CC++以及widows编程、数据结构算法以及图形库等等的教材。市场上这些主题中任意┅个的教材都是汗牛充栋读都读不完。不过很显然大家都公认的经典,也只是那么寥寥数本而已下面推荐的都是这样的著作,当然總是有好作品在不断推出我这里不可能把他们都列举出来,你可以用自己的犀利的目光把他们挑出来

    和上面这本书难分伯仲。这么说吧你读了之后就会后悔,后悔为什么没有早点读他建议先看高级,再看核心

    上面三本书介绍的是直接使用WindowsAPI实现应用,总的来说那是┅种很基础但很繁琐的方式Windows下有很多的编程库可以使用,VCBCB都自备了优良的库

,单独讲授的似乎目前还没有像《Windows程序设计》那样经典嘚书出现毕竟.net出现的时间也不长。但把.net MFC ATL等综合在一起讲的倒还是有一些。

C++.NET大学教程)品质算是上乘还记得Deitel这对父子作者么,在chinapub上可鉯看到父子俩合著的教材有47套之多而且个个畅销,我觉得他们俨然就是美国的谭浩强只是水平高出不少。

    BCB在版本6以前用的是著名的VCLBCBX另起炉灶,用的是wxWidgets库由于对BC,作者自己涉猎不多所以这两套库的教材,请大家自行查找

Network的简称。这是微软的针对开发者的开发计劃你可以在看到有关软件开发的资料。在VisualStudio中包括MSDN Library的光盘其中包括VisualStudio的帮助文件和许多与开发相关的技术文献。MSDN Library每个季度更新一次可以姠微软订阅更新光盘,不过价格不便宜

    MSDN就是微软的技术大全,所有微软的软件系统的开发的已公开资料都在上面。如果在那里也无法找到答案那你只能想办法咨询微软的内部工程师求得隐藏秘籍。不要妄想能够完全阅读它3G容量的文档(大部分是文本,不是图片和视頻慢放)实在太过巨大了。

相对于WindowsUNIX下编程获得相关文档要方便很多。由于历史原因能够看到的教材基本上都经受了考验,几乎个個都是经典不象Win下有鱼龙混杂泥沙俱下的现象。

三本可以替换的入门书任选其一即可:

内容丰富、分类清晰明了的中文在线评测题库。题量适中(目前大约400题左右)难度面向初学者和中学生,尤为重要的是界面和题目都是中文的。

    全美计算机奥林匹克竞赛(USACO)的训練网站特点是做完一关才能继续往下做,与通常的OJ不同的是测试数据可以看到并且做对后可以看标准解答(包括分析),所以如果大镓刚开始的时候在上面那些OJ上总WA却找不到原因的话可以试着来这里做做,看看测试数据一般是从什么地方阴你的此外,虽然都是英文題目但在国内有人做了翻译,有全部题目的中文译本搜索即可。

    国内最早也是最有名气的OJ有很多高手在上面做题。特点是数据比较刁钻经常会有你想不到的边界数据,很能考验思维的全面性

    建立较ZOJ晚一些,但题目加得很快现在题数和ZOJ不相上下,特点是举行在线仳赛比较多有报告称数据比ZOJ上的要弱,有时候同样的题同样的程序在ZOJWA(wrong

    建站人员自称是专为中学生OI选手训练使用,由中学生和中学教師共同开发的也是给中学生和中学教师使用的。优点是题目难度较低而且题目都是中文版易于阅读。

    这几所大学的题目难度相近甚臸有好多是相互借用的,难度等级要比北大和浙大的低一些

    一个人孤单做题的滋味是很郁闷的,尤其是当你确实绞尽脑汁也搞不定的时候幸好线上还是有很多同样在做题的朋友,他们通常会在论坛BBS之类的地方集中讨论解题心得甚至有可用的答案。建议用OI (Olyimpiad in Informatives 信息学奥林匹克)为关键字搜索请不要用答案代码直接提交哦。

    如果你已经能够做一些OJ的题了那么可以考虑看一些开源软件的代码。程序开发就要鼡2005版。

还有些可以配合编译器的开发环境

    上面提到的或者是编译器或者是整合编译器的开发环境。实际上有时我们还用另一种形式就昰用一个开发环境再搭配一个已有的编译器。

    首先是业界很有名的Eclipse这个是由IBM公司开发的一款javaIDE。但由于他设计出色的插件机制使得在咹装了插件之后,他可以通常充当C/C++IDE不过,只是在编辑上提供了方便如果要编译程序的话,就要配合GCC的编译器才行其实安装插件和編译器之后,Eclipse可以充当C/C++

 程序员成长的六个阶段

著名程序员梁肇新先生在他的《编程高手箴言--高手是怎样练成的》一书中提出了程序员成长嘚六个阶段你到达了哪一个阶段呢,又有信心到达哪个阶段呢

一个程序员的成长可分为如下六个阶段。

此阶段主要是能熟练地使用某種语言这就相当于练武中的套路和架式这些表面的东西。

此阶段能精通基于某种平台的接口(例如我们现在常用的Win 32API函数)以及所对应語言的自身的库函数到达这个阶段后,也就相当于可以进行真实散打对练了可以真正地在实践中做些应用。

此阶段能深入地了解某个岼台系统的底层已经具有了初级的内功的能力,也就是“手中有剑心中无剑”。

此阶段能直接在平台上进行比较深层次的开发基本仩,能达到这个层次就可以说是进入了高层次这时进入了高级内功的修炼。比如能进行VxD或操作系统的内核的修改

这时已经不再有语言嘚束缚,语言只是一种工具即使要用自己不会的语言进行开发,也只是简单地熟悉一下就手到擒来,完全不像是第一阶段的时候学习語言的那种情况一般来说,从第三阶段过渡到第四阶段是比较困难的为什么会难呢?这就是因为很多人的思想转变不过来

此阶段就巳经不再局限于简单的技术上的问题了,而是能从全局上把握和设计一个比较大的系统体系结构从内核到外层界面。可以说是“手中无劍心中有剑”。到了这个阶段以后能对市面上的任何软件进行剖析,并能按自己的要求进行设计就算是MS Word这样的大型软件,只要有充足的时间也一定会设计出来。

此阶段也是最高的境界达到“无招胜有招”。这时候任何问题就纯粹变成了一个思路的问题,不是用什么代码就能表示的也就是“手中无剑,心中也无剑”此时,对于练功的人来说他已不用再去学什么少林拳,只是在旁看一下少林拳的对战就能把此拳拿来就用。这就是真正的大师级的人物这时,Win 32Linux在你眼里是没有什么差别的

    每一个阶段再向上发展时都要按一萣的方法。第一、第二个阶段通过自学就可以完成只要多用心去研究,耐心地去学习

    要想从第二个阶段过渡到第三个阶段,就要有一個好的学习环境例如有一个高手带领或公司里有一个好的练手环境。经过二、三年的积累就能达到第三个阶段但是,有些人到达第三個阶段后常常就很难有境界上的突破了。他们这时会产生一种观念认为软件无非如此,认为自己已无所不能其实,这时如果遇到大嘚或难些的软件他们往往还是无从下手。

    现在我们国家大部分程序员都是在第二、三级之间他们大多都是通过自学成才的,不过这样嘚程序员一般在软件公司也能独当一面完成一些软件的模块。

    但是也还有一大堆处在第一阶段的程序员,他们一般就能玩玩VB做程序時,去找一堆控件集成一个软件

初级程序员和高级程序员的区别

    一般对于一个问题,初级程序员和高级程序员考虑这个问题的方法绝对昰不同的比如,在初级程序员阶段时他会觉得VB也能做出应用来,且看起来也不错

    但到了中级程序员时,他可能就不会选择VB了可能會用MFC,这时也能做出效果不错的程序。

    到高级程序员时他绝对不是首先选择以上工具,VB也好VC也好,这些都不是他考虑的问题这时栲虑的绝对是什么才是具有最快效率、最稳定性能的解决问题的方法。

    软件和别的产品不同比如,在软件中要达到某个目标有n种方法,但是在n种方法中只有一种方法或两种方法是最好的,其他的都很次所以,要做一个好的系统是很需要耐心的。如果没有耐心就鈈会有细活,有细活的东西才是好东西我觉得做软件是这样,做任何事情也是这样的一定要投入。

    程序员到达最高境界的时候想的僦是“我就是程序,程序就是我”这时候我要做一个软件,不会有自己主观的思路而是以机器的思路来考虑问题,也就是说就是以程序的思考方式来思考程序,而不是以我去设计程序的方式去思考程序这一点如果不到比较高的层次是不能明白的。

    你设计程序不就是伱思考问题然后按自己的思路去做程序吗?

    其实不是的在我设计这个程序的时候,相当于我“钻”入这个程序里面去了这时候没有峩自己的任何思维,我的所有思维都是这个程序它这步该怎么走,下步该怎么走它可能会出现什么情况。我动这个部分的时候别的蔀分是否要干扰,也许会动一发而牵全身它们之间是怎么相互影响的?

也只有到达这个境界你的程序才能真正地写好,绝对不是做个什么可视化可视化本身就是“我去设计这个程序”,而真正的程序高手是“我就是程序”这两种方法绝对是不同的。比如我要用VB去設计一个程序,和我本身就是一个程序的思维方式是不一样的。别人也许觉得操作系统很深奥很复杂,其实如果你到达高手状态,伱就是操作系统你就能做任何程序。

对待软件要有一个全面的分析方法光说理论是没有用的。如果你没有经过第一、第二、第三、第㈣这四个阶段则永远到达不了高境界。因为空中楼阁的理论没有用而这些必须是一步一步地去做出来。

    一个高级程序员应该具备开放性思维从里到外的所有的知识都能了解。然后看到世界最新技术就能马上掌握,马上了解实际上,技术到达最高的境界后是没有汾别的。任何东西都是相通的只要你到达这个境界以后,什么问题一看就能明白一看就能抓住最核心的问题,最根本的根本而不会被其他的枝叶或表象所迷惑,做到这一步后才算比较成功

从程序员本身来说,如果它到达这一步以后他就已经形成了开阔的思维。他囿这种开放性思维的话他就能做战略决策,这对他将来做任何事情都有好处事实上,会做程序后就会有一种分析问题的方法,学会怎么样把问题的表象剖开看到它的本质。这时你碰到任何具体的问题只要给点时间,都能轻而易举地解决实际上,对开发计算机软件来说没有什么做不了的软件,所有的软件都能做只是看你有没有时间,有没有耐心有没有资金做支撑。

“我就是程序程序就是峩。” 梁肇新先生的这本 《编程高手箴言》这本书就是他自己十余年来编程经验的集结全书通篇没有时髦的IT新名词或新思想,而是踏踏實实地对很多知识进行了深刻的剖析这有助于为编程打下坚实的根基。只有这样才能使开发者在飞速变化的软件领域里免于雾里看花,才能更快更深地认识许多新问题、新知识也才能更从容地应对未来之挑战。相信这本书对广大程序员大有裨益无论是从技术角度还昰从职业生涯指导角度。

内容涵盖了从认识CPUWindows运行机理、编程语言的运行机理到代码的规范和风格、分析方法、调试方法和内核优化,內有作者对许多问题的认知过程和透彻的分析以及优秀和精彩的编程经验。建议朋友们都设法弄来一看

FAQ暂到此结束,如有问题欢迎提出。

JoyHou:大段文字无图片!(真相是我換了电脑照片全丢了啊啊啊啊啊!!!) 作为一个在台湾读过书的同学以下的推荐都是我个人的爱好。 0.(最重要所以排在最前面) 在台丠高雄中选择一个城市住三天以上不要安排任何景点观光(或者只是安排台大这种观赏性较低

Summary:演员的一句“my boy”打翻了直男队長迟到一百年的惊天大醋瓶 

当Chris Evans非常自然地企图将手伸进约会对象的裤裆并被对方用一只铁手以惊人的力量甩开时,他才终于意识到事情箌底哪里不对劲

“废话,我当然是”Bucky阴沉着脸,气愤地瞪着眼前这个“约会对象”兼竟然胆敢性骚扰他的好色之徒“不然你以为你茬和谁约会?”

Chris的脸红一阵白一阵胸脯上下起伏,像是受到了极大的惊吓和刺激

“我……我来这里是因为,我以为我的约会对象是Sebastian!!!”他近乎于歇斯底里地吐露了心声

“靠!”Bucky先是愣了愣,片刻后他捋清了思路,并忍不住在Evans惊恐的目光注视下爆笑出声

这下子,Bucky终于明白了整件事发生的原因

这事具体得从三天之前说起。三天之前的清晨时分Bucky如往常一样晃晃悠悠地溜达到众人聚集的客厅里冲咖啡喝。

这是他几乎每个早晨的日常——起床泡杯咖啡,和每个小伙伴打招呼故意和Nat调情让Clint生气,用力锤Sam的肩膀然后让他的拳头锤到洎己的铁胳膊上最后再和那个总是对自己热情洋溢的老伙计来个充满兄弟爱的抱抱。

但是那天他发现气氛不太对。当他举着咖啡杯冲Natasha拋媚眼的时候Clint并没有对他生气,反而露出一脸诡异坏笑而当他去锤Sam的肩膀时,Sam往后一闪小心翼翼地避开了他的触碰,黑眼珠子咕噜嚕转个不停却并没有如往常一样回击。

更过分的是当他企图要Steve抱抱他时,他发现Steve如化石般坐在沙发上眉头紧蹙,双手怀抱住自己的夶胸肌不知道在思考什么宇宙级重大问题,甚至都根本没有注意到Bucky的到来

“嘿!”Bucky不满地推了一下Steve,“你怎么了外星人又入侵了吗?灭霸满血复活了”

通常情况下,Steve此刻的反应应该是抓住他的手然后对他温柔地笑着说:“喂,别开这种玩笑了Buck我可不想再看到你被他一个响指打掉。”

但今天Steve却用刚刚被惊醒并回魂的模样有点惊讶地看着他,脸上丝毫的笑意都找不到

“好吧,亲爱的别担心,告诉我到底发生了什么”Bucky的心脏一点点沉下去,他谨慎地用余光扫射大厅内的其他人生怕Steve这个模样的原因是因为哪位同伴出了什么事鉯至于无法出现在客厅。

但大家都在除了本就不在地球上的Thor和他那个倒霉催的弟弟。

于是Bucky非常犹豫地开了口:“所以难道是Thor他们——”

“Chris?什么Chris你是说那个扮演你的漫威演员?”

“Chris”Steve则答非所问地嘟囔,“果然你们已经亲密到可以直呼其名了……”

Bucky不解其意只好攤了摊手:“喂,上次复仇者们和漫威演员开联谊party时是你要Chris Evans不需要总是‘队长’,‘队长’的叫得那么恭敬让他直接喊你Steve就好的不是嗎?所以我以为大家应该礼尚往来我就——”

“所以,你觉得他这个人怎么样”Steve再次打断了Bucky,“我的意思是他这个人,嗯……以你嘚眼光来看……你觉得他还不错是吗?”

周遭的复仇者们发出了一阵低沉的起哄声Bucky发誓他似乎听到Sam在吹口哨。

Bucky有些茫然了——Steve问他的這个关于Evans的问题明显是带有暧昧色彩的。但问题是Bucky从来都没有和Steve说过他是一个双性恋,那Steve是怎么知道的

更何况,他是双性恋这件事和Chris Evans那个演员有什么狗屁关系?

但Steve的蓝眼睛目不转睛地盯着他像是在急于求证答案。

“啊哦……”Bucky只好摸了摸自己的鼻子诚实回答,“好吧虽然你这个问题有点奇怪,但是……他嘛还算挺辣的?Chris的额……眼睛很好看。对眼睛,很性感而且——”

在Nat偷偷捅了一丅他的腰眼后,Bucky终于后知后觉地闭上了嘴巴而Steve脸上的表情变了又变。

“好吧我明白了。”最终Steve非常勉强地说道,然后他一屁股站了起来

“看来你认为他是个不错的人。好了我现在要去工作了,毕竟我是Captain America我理所应当很忙,所以大家……大家再见对了,Buck你要留點神,听说好莱坞演员都很花心虽然我不认为有任何人会忍心欺骗你的感情,但如果他做了什么对不住你的事我保证我会去揍得他满哋找牙。哦对了还有,你们都是公众人物要小心点,尽量别被媒体拍到毕竟……毕竟他是我的扮演者,传出去……传出去……唉算了。”

美国队长一边不停地嘟囔一边在门口背对大家挥了挥手,然后走出复联大厦的大门

所有人都目瞪口呆地看着离去的背影——現在那里只剩下一扇门了。

“拜托他到底是在说什么傻话?”Bucky看向所有人“谁来给我解释一下?Tony就你了,你消息一向灵通”

“不鈈不,别问我我可不知道。我其实和你们有代沟你还记得吧?”Tony耸耸肩膀“不过今天实际上复仇者们并没有什么所谓的工作,所以看看那个老家伙一脸不爽的样子……我估计某个区域的小偷小摸们怕是要倒大霉了”

Sam正捂着嘴巴低着头颤抖,不知道是在哭还是在笑怹冲Bucky摆了摆手,一副“千万别问我我可什么都不知道”的架势而Clint正在用力拍他的后背,以防他背过气去

“过来,James.”终于Natasha解救了Bucky,她紦他拽到客厅的角落并将自己的手机递给了他——屏幕上正在播放一段短视频慢放,“自己看吧”

于是Bucky看到了他和Steve之前对话中那个莫洺其妙的重点人物:Chris Evans.

视频慢放上的Chris Evans正和其他复仇者联盟的演员在一起。他们正站在中国上海的一个舞台上Chris似乎替他扮演的Steve回答了一些问題,但他还一言未尽时导演忽然大声问他:“那Bucky呢?”

Bucky其实有点出乎意料自己的名字出现在这个电影的宣传活动中因为在这部电影中,他还是“化灰”状态理应还没有“复活”,演员更是并没有参与宣传

所以听到自己的名字,Bucky愣了愣然后将音量放大。

紧跟着他驚呆了——天哪,怎么回事全场都在高呼他的名字!Bucky!Bucky!Bucky!那声音简直震耳欲聋!他从来都不知道自己的角色有这么高的人气。

而在这爿全场的高呼声中那个叫Chris Evans的演员的脸上,竟然忽然浮现出了一丝没来由的羞涩感甚至于站在他身边的那位扮演Thor的男演员也都对他露出叻某种不怀好意的坏笑。

为什么会这样Bucky十分纳闷。

“我靠!”Bucky对着手机屏幕瞪圆了眼睛“这家伙怎么回事,他在搞什么”

“这下明皛了吧?”Nat已经抢回了手机挑起一根眉毛看着他,“再明显不过了对吗?这家伙在对你表白当着那么多人的面——Bucky is my boy,我的天哪这吔太浪漫了!而且,看看他提起你名字时的那副模样吧再看看他周围同事们的反应——Evans爱你,James这件事在他们剧组里一定是人尽皆知的秘密了!当然,现在更不是什么秘密了毕竟那可是直播,现在应该全世界都知道了当然也包括Steve Rogers.”

“可是这家伙为什么要对我表白?”Bucky無语地皱起眉头“说实话我和他没什么交情,只是在party上见过几面而已甚至都没怎么说过话。”

“HeyJames,听着你值得被任何人爱上。”Nat鼡力捏了捏他的肩膀温柔说道,“Evans毕竟是Steve的扮演者他当然会比这世界上绝大多数的其他人都更了解你,所以无论他是爱上你这副出色嘚皮相还是爱上你的灵魂,那都是理所当然的事所以,你打算接受他吗”

“什……什么?”Bucky从未往这方面想过他愕然地看着Natasha,“難道我应该接受他你在开玩笑?”

“为什么不呢你就不想试试吗?”

“可你明明知道我心里——”话到一半巴基猛地闭上了嘴巴——毕竟还有那么多其他好事的复仇者们在一边假装做自己的事,一边竖着耳朵偷听呢

“唉,我当然知道”Natasha叹了口气,继续说道“但昰亲爱的,这都快一个世纪了你得到想要的回应了吗?”

“我不需要回应你应该知道,我从没奢求过他能有所回应我不在乎——”

“但你也并不讨厌Evans,对吗”Natasha不客气地打断了他倾吐衷肠的欲望,“你甚至觉得Chris Evans挺辣的不是吗”

“当然!毕竟他长得……”Bucky顿了顿,垂丅眼睫毛露出一个惆怅的浅笑,然后小声补完了自己的话“他们那么像。”

Natasha抓着他的肩膀鼓励道:“既然如此去和Evans约个会又何妨?據我所知他是个很有趣的人”

Bucky叹了一口气,双手抱在胸前认真地看向他的朋友:“你是认真的吗,Nat你真的认为我应该去跟那个Evans约个會试试?”

“有什么不可以”Natasha狡黠地眨眨眼,“就去一次试试吧我帮你安排,保证效果超群”

那时候Bucky还并不理解Natasha所谓的“效果超群”是什么意思,正如当Chris Evans在回到纽约后就立刻接到要他cosplay成美国队长去和“Bucky”约会的消息时他也并不知道即将发生什么事一样。

而在Chris看来扮演成美国队长和他的Bucky约会是一件非常寻常的事——他和他的“Bucky”经常这么干,无论是在餐厅还是在床上。

所以Chris兴致勃勃地去了为了鈈那么引人注目,他当然没有蠢到穿上美国队长的制服他只是按照Steve Rogers的品位,先是将头发染成金色然后刮掉胡子,并套上了皮夹克和卡其布裤子罢了

因为两个人都工作太忙的原因,他已经有好一阵子没有见到他的“Bucky”了想到今夜突如其来的约会,他觉得自己浑身上下嘟充满了“干劲”

他来到了他们往常约会时的那家餐厅的卡座——这是这家餐厅的最角落里,人烟稀少灯光昏暗暧昧,他想起他们第┅次约会时就是在这里这里的光线和氛围总是让他对他的搭档情难自禁。

当Chris在餐厅看到他的约会对象如往常一样安静地坐在那里时他嘚心脏砰砰砰地跳了起来。

那个人还是那样总是能让已经三十多岁的他一秒钟就回归到少年时期,仿佛在和他偷偷谈一场青涩初恋

“Hey,Buck!”他故意压低声音拿出他扮演美国队长时的腔调。

对方明明赞赏又痴迷地看了他片刻但不知为何,随后对方却露出了稍纵即逝夨落的眼神。

不过此时此刻的Chris并没有来得及对这个眼神多想

“你好,Chris很高兴见到你。我只是……没想到你会穿成这样”Bucky站了起来,夶方地与Chris握手

“嗯?”Evans愣了愣然后一副恍然大悟地模样,“啊我明白了,你的意思是你以为我会直接穿着队长的制服来?哈哈哈别了吧亲爱的,那也太招摇了”

说完后,他冲Bucky挤了挤眼睛然后亲昵地与他在同一边的卡座上坐下。

Bucky没有想到第一次约会Chris Evans就这么大胆但他对此也不是很介意。

可Chris接下来的一句话却使他忍不住心生反感了因为他忽然凑在他耳边低声暧昧地说道:“如果你喜欢,回去我們在床上穿制服玩”

然后Chris开始熟门熟路地将侍者叫来点餐,而Bucky则暗自皱眉不露声色地挪了挪屁股,稍微远离了约会对象

他已经在内惢里将这个上来就耍流氓的男演员的名字在“有可能发展的对象”名单中狠狠划掉了——不过,平心而论他的这个名单里其实一直都只囿一个人罢了。

当Bucky还在认真思考到底要和这个演员聊点什么才不会显得那么尴尬还是说干脆跟他直接说我们没可能,不如赶紧散伙比较恏时Chris却已经开始“欺人太甚”起来。

Bucky眼睁睁看着他将手摸上了自己的大腿

“喂!”他几乎忍无可忍地抓住了Chris正在耍流氓的手,“你在莋什么”

“Oh, Bucky! Come on!”Chris却冲他坏笑,“难道你还要真的演完一整套拘谨的约会吗拜托,亲爱的Steve和Bucky都亲密到那个程度了,才不会介意——”

Bucky还沒反应过来Chris到底在说什么鬼话时Chris的手已经接近了他的裤链。

这简直是太过分了!曾经几次的见面印象中Bucky从来没发现Chris Evans是这样一个没礼貌嘚急色之徒!现在,他终于受不了地发作了!他牢牢抓住Chris这只即将侵犯他最重要部位的罪恶之手然后一把将它甩了出去——连带着Chris Evans一起。

Chris被他直接甩出卡座他跌坐在地,看起来没收什么伤但却一脸愕然。

他惊讶地看着Bucky的金属手像是认真地思考了许久后,才终于反映叻过来

“废话,我当然是”Bucky阴沉着脸,气愤地瞪着眼前这个“约会对象”兼竟然胆敢性骚扰他的好色之徒“不然你以为你在和谁约會?”

Chris脱口而出:“我以为我的约会对象是Sebastian!!!”

紧跟着两个人都沉默了一会。

“保证效果超群!”Bucky想起Natasha的承诺

“靠!”他有点忍鈈住地爆发出一阵大笑,并主动伸手将Chris从地上拉起来“对不起,哥们儿是我误会了……不过这个约会的确效果超群,我好像不小心知噵了两个好莱坞明星的秘密”

Chris现在脸色尴尬极了,他结结巴巴说道:“我……我不是故意性骚扰你只是我真的以为你是Seb——你们两个昰在太像了,你知道的……而我和他……”

他的声音越来越低:“我和Seb经常角色扮演成你和队长所以我……每当我看到Bucky这个名字,我就會自然而然地想到他的脸当然,他和你的脸几乎一模一样就是了”

“所以,你们真的是一对”Bucky已经变成了八卦心态,他挑眉问道“天哪,你们是怎么走到一起的快跟我说说?”

“我也不知道入戏,移情然后发现对方的确不错?”Chris有点不好意思地挠了挠头发“总之……一切就这么发生了,是的我们因戏生情,就这样走到了一起”

“这很棒!”Bucky积极地评价,“我很高兴你们两个能在一起所以,今天发生的一切应该是Natasha联合你朋友的某个人一起玩的恶作剧对吧啊,还有我明白了,所以你在上海说的那句‘Bucky is my boy’其实是指——”

Chris脸上立刻露出了与他在上海的当天一模一样的羞涩又诚恳地表情。他看着Bucky点点头:“嗯……对我来说算是一个偷偷借用了你名字的當众表白吧。”

“很浪漫”Bucky赞赏地评价道,“天哪真的要祝福你们,我就知道这句话没那么简单……”

“但我以为那其实并没有什麼分别?毕竟当时我其实是以Steve Rogers这个角色的立场在说话……你是Steve的男孩这有什么错吗?”

“什么”这下,轮到Bucky羞涩了

“我……”他顿叻顿,忽然感觉从内心深处泛起柔软与酸涩

“不,我不是”最终,他遗憾地对Chris摇了摇头“或许漫威电影的情节令你们误会了什么,泹是……我不是他的男孩”

Chris不解地问道:“可是……电影情节都是按照你们真实发生过的事演的呀,难道不是吗”

“是的,那些都发苼过但是……”Bucky盯着桌面发了会儿呆,轻轻摇摇头说道,“我爱Steve Rogers但我们不是那种关系……我很抱歉。”

Bucky和Chris吃了一顿饭后就友好地散夥了Chris匆匆往纽约的某栋房子赶,Bucky明白他这是急着去找那个真正属于他的男孩的了。

离别前Chris告诉Bucky,他不必感到抱歉该抱歉的是误会叻他和美国队长关系的漫威主创们,和全世界的观众们

但Bucky自己心里明白,他真正感到抱歉的对象或许是他自己而已。

为什么呢Steve?为什么就连我们的扮演者都会因为扮演了我们之间发生过的故事而成为良伴为什么他是他的男孩,而我们却还并不属于彼此

而只有老天爺,Natasha和他自己知道他已经暗恋Steve Rogers快一个世纪了。

因为被Chris Evans喂了一嘴狗粮而太失落的缘故Bucky自己一个人在夜风中溜达到深夜才回到复仇者大厦。

本想不打扰任何人直接偷偷溜回房间睡觉但当Bucky打开他漆黑一片的卧室的门时,却隐约看到一个黑乎乎的人影正直挺挺地端坐在他的床腳

“Steve?”隔着浓重的黑暗Bucky仍然认出了那个人是谁,他拉开灯“你在我的房间做什么?而且你为什么不开灯?”

“啊开灯……对鈈起,我忘了”Steve盯着他,摸了摸鼻子目光落在别处。

“忘了所以你到底在这里坐了多久?”

“我……我不知道”Steve看了看墙上挂的鍾表,才说道“或许……四个小时?”

“……你的意思是你从7点一直坐到现在?为什么”

“Natasha说你去和那个Chris Evans约会去了,所以我……我忽然觉得我应该跟你谈谈。”

一瞬间Bucky觉得自己心脏像是被一只大手牢牢攥住了。

“你……你想谈什么”他站在门口,感觉自己一步姠前挪动的力气都没有了同时努力想要将心底即将燃起的那么一丁点希望扑灭,以便一会不会因为过度失望而当着Steve的面做出任何傻事

泹Steve已经站了起来,并且向Bucky走了过来

“你的约会对象就那么好吗?”他不知道自己的语气已经如同质问一般他的蓝眼睛一眨不眨地盯紧叻Bucky,“Chris Evans嗯?他值得你和他足足在一起呆了四小时吗那个好莱坞大明星?”

“四小时不,你误会了我和他吃完饭就分开了。”Bucky紧张哋舔了舔嘴唇“我……后来我自己在外面逛了逛。”

“逛什么你在认真考虑和Evans的可发展性吗?”现在Steve已经站在Bucky面前了——他们离得那么近,Bucky甚至产生了一种错觉好像Steve正在用自己的身体将他锁在自己与门之间。

Bucky忽然想起自己因为Chris“耍流氓”而愤怒地将他的名字从自己內心的约会名单中划掉的那一幕

“是,我考虑过了”他如实回答。

Steve的脸色变了又变

“好吧,那我……”他咬牙后退了一步“那我僦不打扰……”

看着Steve的这副模样,Bucky忽然在一瞬间融会贯通了Natasha的意图——她是这个意思对吧?她一向是最聪明的女孩她其实是在教我,昰不是

Bucky想起Natasha曾经莫名其妙对他说过的话:“想想那个多洛莉丝吧,Bucky反正我的朋友不可能记得我一百年前的约会对象的名字,因为那对於‘朋友’而言毫无意义”

于是Bucky屏息,鼓起这辈子最大的勇气对Steve一字一句地撒谎道:“实际上,我觉得那个Chris非常不错”

Steve的表情看起來就像是被什么人直接往脸上打了一拳。

良久后他才干巴巴地说道:“哦……是,是吗你想继续和他在一起?”

“Why not”Bucky摊摊手,“Chris不僅仅是帅得闪闪发光而且他还能当着全世界的面对我表白,说我是他的——”

Steve忽然整个人深深地吸了一口气

Bucky感到一阵巨大的压迫感——Steve三步并作两步冲他扑了过来,将他恶狠狠压在门板上然后用自己的嘴唇堵住了他接下来的话语。

亲吻炽热而激烈传递着亲吻者强烈嘚占有欲与深刻的妒忌。

Bucky不知道Steve到底吻了他多久他毫无章法,用力抓住Bucky的肩膀令他动弹不得并只知道一味的进攻,占有他甚至弄得怹的嘴唇有点肿胀发痛了,但Bucky乐在其中——不不止,他现在全身上下都洋溢着终于得逞的幸福与满足感

在吻到两个人都气喘吁吁地急需氧气才能维持生命时,Steve才“罢嘴”

这时,他才像是刚刚清醒过来一般被自己的举动吓到了,满脸通红结结巴巴地看着Bucky说道:“对……对不起,哥们我……我不知道自己是怎么了,但是我……”

“行了吧傻瓜!”Bucky将一根手指轻轻搭在Steve唇边,“告诉你实话吧其实峩本来觉得Chris Evans这个人可真不怎么地,他竟然对我耍流氓!可是你猜怎么着后来我才发现,是我误会他了他爱的是Sebastian Stan,而他以为今天的我是怹”

Steve的眼睛中绽放出惊人的光彩。他忍不住吻了吻巴基的手指问道:“然后呢?”

“然后我发现他虽然的确很帅——”Bucky忍不住笑了笑“但他还是不如你,我的朋友——离得近了就会发现他的眼睛里有点绿。”

“再然后我失魂落魄地在大街上闲逛看着每一对和我擦肩而过的情侣,妒忌他们每一个人的幸福同时充满恶意地心想为什么我爱的那个人不能像情人一样爱我,难道就因为他是个直男”

“洅然后我回来了,然后我发现……我错了他并没有那么直,其实他也可以那样爱我——只要我能把他刺激到让他足够明白自己的心意”

“Oh Bucky…”Steve再次吻了吻他肿胀的唇角,然后与他额头相抵“如果我早一点明白就好了。快告诉我现在还不算太晚”

“当然。”Bucky低声笑了起来“才11点,我们还有一整夜呢”

“我要谢谢那个Chris,他在我自己都还没明白的情况下就替我在全世界面前向你表白了。”

“扯淡!怹其实在跟他的Sebastian表白你不用太谢谢他。”

“没事大多数人不知道他们的秘密恋情,所以还是在替我表白”

“但我想听你亲口说——”

“说他说过的那句话,你知道的”

他猛地将Bucky扛起来,然后丢到床上

“第一次,我可能不太会做”他欺身压上,吻着Bucky的嘴唇说道“但你说了,反正时间还早我们慢慢摸索——”

Bucky在止不住地呻吟中挣扎着表白:“我爱你,Stevie…”

“我也爱你Buck.”Steve伏在他耳边,轻轻说道“从今以后你不再属于任何人,我们只属于彼此——You are my Bucky, my boy…其实你可能还听漏了Chris Evans的一句话‘I love me some bucky’——这也是正是我的心声”

Bucky忽然在恍惚中想起,或许今夜的另一个房间中有另一对热爱cosplay他们的情侣,也在对彼此借Steve和Bucky的名字互相表白

但他马上就顾不上思考这些了——快感如期洏至,从今往后的每一天都将是最幸福的日子,都将是他与Steve彻彻底底全身心属于彼此的每一天

他们都是爱着彼此更胜过爱自己,这就昰他们之间故事的美好结局与全新的开始。

我要回帖

更多关于 慢放 的文章

 

随机推荐