﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-行戒高绝-随笔分类-学习笔记</title><link>http://www.cppblog.com/xingjiegaojue/category/11438.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 25 Apr 2010 17:07:06 GMT</lastBuildDate><pubDate>Sun, 25 Apr 2010 17:07:06 GMT</pubDate><ttl>60</ttl><item><title>【转】操作系统开机启动项</title><link>http://www.cppblog.com/xingjiegaojue/archive/2010/04/25/113549.html</link><dc:creator>张纶</dc:creator><author>张纶</author><pubDate>Sun, 25 Apr 2010 15:39:00 GMT</pubDate><guid>http://www.cppblog.com/xingjiegaojue/archive/2010/04/25/113549.html</guid><wfw:comment>http://www.cppblog.com/xingjiegaojue/comments/113549.html</wfw:comment><comments>http://www.cppblog.com/xingjiegaojue/archive/2010/04/25/113549.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xingjiegaojue/comments/commentRss/113549.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xingjiegaojue/services/trackbacks/113549.html</trackback:ping><description><![CDATA[<h1><font face=宋体>原文地址： <a href="http://hi.baidu.com/whs08/blog/item/888d97099271f6c73ac7636d.html">http://hi.baidu.com/whs08/blog/item/888d97099271f6c73ac7636d.html</a><br><br>boot.ini解读</font></h1>
<font face=宋体>Windows XP主要依赖Boot.ini文件来确定计算机在引导过程中显示的可供选取的操作系统类别。<br></font><font face=宋体>boot.ini在缺省状态下被设定为隐含和系统文件属性, 并且被标识为只读文件。 <br>当我们在电脑中安装了多系统（如Windows 98和Windows XP）之后，每次启动计算机时都会出现一个系统引导菜单，在此选择需要进入的系统后回车即可。这个引导程序名为Boot.ini，在安装Windows 2000（XP）时程序自动被安装，使用它我们可以轻松对电脑中的多系统进行引导，还可以通过该引导文件，设置个性化的启动菜单。 <br>Boot.ini文件位于C盘根目录下，是一个隐藏文件，在&#8220;运行&#8221;中输入&#8220;c:\boot.ini&#8221;即可启动该文件。 <br><font face=宋体>如果想对boot.ini文件进行修改，请这样做：<br></font><font face=宋体>为确保在Windows Explorer中看到Boot.ini文件，<br><br></font><font face=宋体>&#8220;工具&#8221;——&#8220;文件夹选项&#8221;——&#8220;查看&#8221;菜单上选择&#8220;显示隐含文件和文件夹&#8221;；更改boot.int前，右击boot.int——&#8220;属性&#8221;，去掉&#8220;只读&#8221; 。<br><br></font><font face=宋体>除了直接编辑boot.ini文件外，还可以借助命令行工具bootcfg.exe对Boot.ini文件执行编辑操作，您可针对系统等待时间（Windows在选择缺省操作系统前所等候的时间）进行修改, 并在现有基础上添加新的供选项目。 <br><br></font><font face=宋体>如需启动bootcfg.exe工具, 请依次执行下列操作步骤： <br><br></font><font face=宋体>按&#8220;Windos键+R&#8221;（也就是&#8220;开始&#8221;-&#8220;运行&#8221;），在提示框中输入"cmd"(注意，不输入引号），进入&#8220;命令提示符&#8221;，在命令行状态下输入bootcfg可以查询当前boot.ini文件的详情。<br><br></font><font face=宋体>执行bootcfg /?来查看相关参数功能。<br><br></font><font face=宋体>1.自定义延迟时间 <br><br></font><font face=宋体>延迟时间是系统启动引导菜单后在设定的延迟时间内用户没有进行任何操作时，进入默认的操作系统。<br><br></font><font face=宋体>系统默认的延迟时间为30秒，如果感觉默认的延迟时间过长，可以输入自己需要的延时时间，如10秒。<br></font><font face=宋体>设置时，首先打开Boot.ini文件（注意要去掉该文件的隐藏、只读属性），随后在[boot loader]字段下找到&#8220;timeout＝&#8221;语句，将其中的30，改为10即可。<br><br></font><font face=宋体>我们还可以在&#8220;系统配置实用程序&#8221;中对其进行修改。在&#8220;开始/运行&#8221;中键入&#8220;msconfig"命令，在弹出的&#8220;系统配置实用程序&#8221;中单击&#8220;Boot.ini&#8221;标签，在&#8220;Boot.ini&#8221;界面中的&#8220;超时XX秒&#8221;项中输入需要的延时时间即可。 <br><br></font><font face=宋体>2.自定义显示内容 <br><br></font><font face=宋体>在多系统启动时，有一个操作系统选择列表，这些列表显示的是电脑中所有操作系统的名称，如：Microsoft Windows XP Professional。<br><br></font><font face=宋体>我们可以对这些显示内容进行修改，加载一些个性化的设置。<br><br></font><font face=宋体>打开&#8220;boot.ini&#8221;文件，找到[operating systems]字段，该字段是显示当前操作系统列表，<br><br></font><font face=宋体>其格式为multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP rofessional" /fastdetect<br><br></font><font face=宋体>后面引号中的部分就是系统启动时显示的内容，只要将引号中的这些内容更改为自己需要的文字即可。 <br><br></font><font face=宋体>3.定义默认启动系统 <br><br></font><font face=宋体>装了多系统后，boot.ini会将其中一个系统设置为默认启动系统，如Windows XP，在超过延迟时间后将自动引导默认的系统启动。<br><br></font><font face=宋体>我们可以根据需要将默认的启动系统更改为其它的系统（如Windows 98），如果不想直接修改boot.ini文件的话，可以这样做：<br><br></font><font face=宋体>右键单击&#8220;我的电脑&#8221;，选择&#8220;属性&#8221;，在系统属性对话框中单击&#8220;高级&#8221;选项，随后在下面的&#8220;启动和故障恢复&#8221;项中选择&#8220;设置&#8221;按钮，弹出一个&#8220;启动和故障恢复&#8221;对话框，单击&#8220;系统启动&#8221;项中的默认操作系统下拉菜单，选择一个需要的系统，单击&#8220;确定&#8221;即可；<br><br></font><font face=宋体>也可以在&#8220;系统配置实用程序&#8221;中进行设置，选中想要设为默认的操作系统，点击下面的&#8220;设为默认&#8221;即可。<br><br></font><font face=宋体>4.加载启动参数，更改启动画面 <br><br></font><font face=宋体>boot.ini在引导多系统启动时提供了很多的参数命令，这些启动参数可以得到不同的启动效果。<br><br></font><font face=宋体>boot.ini在默认的情况下加载的是/fastdetect参数，表示启动时不检查串行口和并行口。<br><br></font><font face=宋体>其实我们可以更改为其它参数，更改时首先在&#8220;boot.ini&#8221;中选择需要更改的系统列表，随后将该系统中的参数/fastdetect改为相应的参数值即可。以后再启动该系统就会加载一些设置信息或画面。我们以可以在&#8220;系统配置实用程序&#8221;中对一些参数进行设置，切换到&#8220;boot.ini&#8221;选项，先选中需要更改的系统，随后在&#8220;启动选项&#8221;下端勾选需要的启动参数即可,此对几个常用参数加以说明:<br><br></font><font face=宋体>SAFEBOOT：安全启动，只启动HKLM\System\CurrentControlSetControl\SafeBoot中的驱动程序和服务，其后可跟三个参数Minimal、Network或Dsrepair。<br><br></font><font face=宋体>Minimal和Network允许在网络连接下启动系统;Dsrepair要求系统从备份设备中调入活动目录的设置,还有一个选项是Minimal（AlternateShell），它让系统调入由HKLM\System\CurrentControlSetSafeBoot\AlternateShell指定的SHELL程序，而不使用默认的Explorer。 <br><br></font><font face=宋体>/NOGUIBOOT:不加载VGA驱动程序，也就不会显示启动过程和失败时的蓝屏信息。 <br><br></font><font face=宋体>/BOOTLOG：将日志写入Nnbtlog.txt文件。 <br><br></font><font face=宋体>/BASEVIDEO：使用标准VGA方式启动，这种方式主要用于显示驱动程序失效时。 <br><br></font><font face=宋体>/SOS：在调入驱动程序名时显示它的名称，因驱动问题而无法启动时使用比较好。 <br><br></font><font face=宋体>通过以上设置我们就可以轻松设置启动菜单了!<br><br></font><font face=宋体>FAQ:<br><br></font><font face=宋体>boot.ini文件丢失怎么办？ <br><br></font><font face=宋体>通过手动在C盘创建一个boot.ini文件<br><br></font><font face=宋体>一般的XP下面的boot.ini文件为：<br><br></font><font face=宋体>[boot loader]<br><br></font><font face=宋体>timeout=10<br></font><font face=宋体><br>default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS<br><br></font><font face=宋体>[operating systems]<br><br></font><font face=宋体>multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect /usepmtimer<br></font><font face=宋体><br>然后把此文件保存为boot.ini文件即可。<br></font><font face=宋体><br>如果您需要更改boot.ini文件的内容，可以这样： <br></font><font face=宋体><br>1. 单击开始按钮，单击控制面板，然后双击系统。 <br></font><font face=宋体><br>2. 单击高级选项卡，然后单击&#8220;启动和故障恢复&#8221;下的设置。 <br></font><font face=宋体><br>通常，boot.ini 文件包含以下数据： <br></font><font face=宋体><br>[boot loader]<br></font><font face=宋体><br>timeout=30<br></font><font face=宋体><br>default=scsi(0)disk(0)rdisk(0)partition(1)\winnt<br></font><font face=宋体><br>[operating systems]<br></font><font face=宋体><br>scsi(0)disk(0)rdisk(0)partition(1)\winnt = "Windows NT" /NODEBUG C:\ = "Previous Operating System on C:\" <br></font><font face=宋体><br>下面的列表描述了 Boot.ini 文件中数据的含义： &#8226; &#8220;timeout&#8221;指定在选择默认的操作系统之前 Windows 等待的时间 <br></font><font face=宋体><br>&#8226; &#8220;default&#8221;指定默认的操作系统。 <br></font><font face=宋体><br>&#8226; &#8220;scsi(0)&#8221;表示主控制器（通常也是唯一的控制器）负责此设备。如果有两个 SCSI 控制器并且磁盘与第二个控制器相关联，则第二个控制器称为&#8220;scsi(1)&#8221;。<br></font><font face=宋体><br>如果系统使用 IDE、增强的 IDE (EIDE) 或增强的小型设备接口 (ESDI) 驱动器，或者如果系统使用没有内置 BIOS 的 SCSI 适配器，请将&#8220;scsi&#8221;替换为&#8220;multi&#8221;。 <br></font><font face=宋体><br>&#8226; &#8220;disk(0)&#8221;指要使用的 SCSI 逻辑单元 (LUN)。它可以是独立的磁盘，但是大多数 SCSI 设置对每个 SCSI ID 只有一个 LUN。 <br></font><font face=宋体><br>&#8226; &#8220;rdisk(0)&#8221;指物理磁盘 1 <br></font><font face=宋体><br>&#8226; 本例中的&#8220;partition(1)&#8221;是计算机中第一个驱动器上的唯一分区。如果有两个分区（C 和 D），则分区 C 为 partition(1)，分区 D 为 partition(2)。 <br></font><font face=宋体><br>&#8226; 包含多重引导方式的参数（如果有的话）要求检查 Winnt 文件夹以从指定的 SCSI 控制器的磁盘和分区进行引导。 <br></font><font face=宋体><br>&#8226; &#8220;/NODEBUG&#8221;指定没有监视任何调试信息。调试信息仅对程序开发人员有用。 <br></font><font face=宋体><br>&#8226; 您可以添加 /SOS 选项以在加载驱动程序时显示驱动程序名。默认情况下，OS Loader 屏幕仅显示进度点。 <br><br></font><font face=宋体>&#8226; &#8220;Previous Operating System on C:\&#8221;表示&#8220;上一个操作系统&#8221;是 MS-DOS，因为&#8220;C:\&#8221;是 MS-DOS 路径。</font></font>
<img src ="http://www.cppblog.com/xingjiegaojue/aggbug/113549.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xingjiegaojue/" target="_blank">张纶</a> 2010-04-25 23:39 <a href="http://www.cppblog.com/xingjiegaojue/archive/2010/04/25/113549.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>(转)GUN make指南</title><link>http://www.cppblog.com/xingjiegaojue/archive/2010/04/23/113388.html</link><dc:creator>张纶</dc:creator><author>张纶</author><pubDate>Fri, 23 Apr 2010 15:33:00 GMT</pubDate><guid>http://www.cppblog.com/xingjiegaojue/archive/2010/04/23/113388.html</guid><wfw:comment>http://www.cppblog.com/xingjiegaojue/comments/113388.html</wfw:comment><comments>http://www.cppblog.com/xingjiegaojue/archive/2010/04/23/113388.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xingjiegaojue/comments/commentRss/113388.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xingjiegaojue/services/trackbacks/113388.html</trackback:ping><description><![CDATA[<table border=0 cellSpacing=10 cellPadding=0 width="100%">
    <p><font size=-1><big><big><font color=#ff8000><span style="COLOR: red"><strong>(原文地址链接)http://www.china-askpro.com/msg22/qa83.shtml</strong></span><br>GNU make 指南</font></big></big> <br>&nbsp;&nbsp;&nbsp;&nbsp;翻译： 哈少 <br>&nbsp;&nbsp;&nbsp;&nbsp;译者按： 本文是一篇介绍 GNU Make 的文章，读完后读者应该基本掌握了 make 的用法。而 make 是所有想在 Unix （当然也包括 Linux ）系统上编程的用户必须掌握的工具。如果你写的程序中没有用到 make ，则说明你写的程序只是个人的练习程序，不具有任何实用的价值。也许这么说有点儿偏激，但 make 实在是应该用在任何稍具规模的程序中的。希望本文可以为中国的 Unix 编程初学者提供一点儿有用的资料。中国的 Linux 用户除了学会安装红帽子以外， 实在应该尝试写一些有用的程序。个人想法，大家参考。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;C-Scene 题目 #2 <br>&nbsp;&nbsp;&nbsp;&nbsp;多文件项目和 GNU Make 工具 <br>&nbsp;&nbsp;&nbsp;&nbsp;作者: 乔治富特 (Goerge Foot) <br>&nbsp;&nbsp;&nbsp;&nbsp;电子邮件: george.foot@merton.ox.ac.uk <br>&nbsp;&nbsp;&nbsp;&nbsp;Occupation: Student at Merton College, Oxford University, England <br>&nbsp;&nbsp;&nbsp;&nbsp;职业:学生，默尔顿学院,牛津城大学,英格兰 <br>&nbsp;&nbsp;&nbsp;&nbsp;IRC匿名: gfoot <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;拒绝承诺：作者对于任何因此而对任何事物造成的所有损害（你所拥有或不 拥有的实际的，抽象的，或者虚拟的）。所有的损坏都是你自己的责任，而 与我无关。 <br>&nbsp;&nbsp;&nbsp;&nbsp;所有权： &#8220;多文件项目&#8221;部分属于作者的财产，版权归乔治富特１９９７年 五月至七月。其它部分属 CScene 财产，版权 CScene １９９７年，保留所有 版权。本 CScene 文章的分发，部分或全部，应依照所有其它 CScene 的文章 的条件来处理。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;0) 介绍 <br>&nbsp;&nbsp;&nbsp;&nbsp;~~~~~~~~~~~~~~~ <br>&nbsp;&nbsp;&nbsp;&nbsp;本文将首先介绍为什么要将你的Ｃ源代码分离成几个合理的独立档案，什么时 候需要分，怎么才能分的好。然后将会告诉你 GNU Make 怎样使你的编译和连 接步骤自动化。对于其它 Make 工具的用户来说，虽然在用其它类似工具时要 做适当的调整，本文的内容仍然是非常有用的。如果对你自己的编程工具有怀 疑，可以实际的试一试，但请先阅读用户手册。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;1) 多文件项目 <br>&nbsp;&nbsp;&nbsp;&nbsp;~~~~~~~~~~~~~~~~~~~~~~ <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;1.1为什么使用它们? <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;首先，多文件项目的好处在那里呢？ <br>&nbsp;&nbsp;&nbsp;&nbsp;它们看起来把事情弄的复杂无比。又要 header 文件，又要 extern 声明，而且如果需要查找一个文件，你要在更多的文件里搜索。 <br>&nbsp;&nbsp;&nbsp;&nbsp;但其实我们有很有力的理由支持我们把一个项目分解成小块。当你改 动一行代码，编译器需要全部重新编译来生成一个新的可执行文件。 但如果你的项目是分开在几个小文件里，当你改动其中一个文件的时 候，别的源文件的目标文件(object files)已经存在，所以没有什么 原因去重新编译它们。你所需要做的只是重现编译被改动过的那个文 件，然后重新连接所有的目标文件罢了。在大型的项目中，这意味着 从很长的（几分钟到几小时）重新编译缩短为十几，二十几秒的简单 调整。 <br>&nbsp;&nbsp;&nbsp;&nbsp;只要通过基本的规划，将一个项目分解成多个小文件可使你更加容易 的找到一段代码。很简单，你根据代码的作用把你的代码分解到不同 的文件里。当你要看一段代码时，你可以准确的知道在那个文件中去 寻找它。 <br>&nbsp;&nbsp;&nbsp;&nbsp;从很多目标文件生成一个程序包 (Library)比从一个单一的大目标文件 生成要好的多。当然实际上这是否真是一个优势则是由你所用的系统 来决定的。但是当使用 gcc/ld (一个 GNU C 编译／连接器) 把一个程 序包连接到一个程序时，在连接的过程中，它会尝试不去连接没有使 用到的部分。但它每次只能从程序包中把一个完整的目标文件排除在 外。因此如果你参考一个程序包中某一个目标档中任何一个符号的话， 那么这个目标文件整个都会被连接进来。要是一个程序包被非常充分 的分解了的话，那么经连接后，得到的可执行文件会比从一个大目标 文件组成的程序包连接得到的文件小得多。 <br>&nbsp;&nbsp;&nbsp;&nbsp;又因为你的程序是很模块化的，文件之间的共享部分被减到最少，那 就有很多好处——可以很容易的追踪到臭虫，这些模块经常是可以用 在其它的项目里的，同时别人也可以更容易的理解你的一段代码是干 什么的。当然此外还有许多别的好处&#8230;&#8230; <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;1.2 何时分解你的项目 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;很明显，把任何东西都分解是不合理的。象&#8220;世界，你们好&#8221;这样的 简单程序根本就不能分，因为实在也没什么可分的。把用于测试用的 小程序分解也是没什么意思的。但一般来说，当分解项目有助于布局、 发展和易读性的时候，我都会采取它。在大多数的情况下，这都是适 用的。（所谓&#8220;世界，你们好&#8221;，既 'hello world' ，只是一个介 绍一种编程语言时惯用的范例程序，它会在屏幕上显示一行 'hello world' 。是最简单的程序。） <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;如果你需要开发一个相当大的项目，在开始前，应该考虑一下你将 如何实现它，并且生成几个文件（用适当的名字）来放你的代码。 当然，在你的项目开发的过程中，你可以建立新的文件，但如果你 这么做的话，说明你可能改变了当初的想法，你应该想想是否需要 对整体结构也进行相应的调整。 <br>&nbsp;&nbsp;&nbsp;&nbsp;对于中型的项目，你当然也可以采用上述技巧，但你也可以就那么开 始输入你的代码，当你的码多到难以管理的时候再把它们分解成不同 的档案。但以我的经验来说，开始时在脑子里形成一个大概的方案， 并且尽量遵从它，或在开发过程中，随着程序的需要而修改，会使开 发变得更加容易。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;1.3 怎样分解项目 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;先说明，这完全是我个人的意见，你可以（也许你真的会？）用别的 方式来做。这会触动到有关编码风格的问题，而大家从来就没有停止 过在这个问题上的争论。在这里我只是给出我自己喜欢的做法（同时 也给出这么做的原因）： <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;i) 不要用一个 header 文件指向多个源码文件（例外：程序包 的 header 文件）。用一个 header定义一个源码文件的方式 会更有效，也更容易查寻。否则改变一个源文件的结构（并且 它的 header 文件）就必须重新编译好几个文件。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;ii) 如果可以的话，完全可以用超过一个的 header 文件来指向同 一个源码文件。有时将不可公开调用的函数原型，类型定义 等等，从它们的Ｃ源码文件中分离出来是非常有用的。使用一 个 header 文件装公开符号，用另一个装私人符号意味着如果 你改变了这个源码文件的内部结构，你可以只是重新编译它而 不需要重新编译那些使用它的公开 header 文件的其它的源文 件。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;iii) 不要在多个 header 文件中重复定义信息。 如果需要， 在其中一个 header 文件里 #include 另一个，但 是不要重复输入相同的 header 信息两次。原因是如果你以后改 变了这个信息，你只需要把它改变一次，不用搜索并改变另外一 个重复的信息。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;iv) 在每一个源码文件里， #include 那些声明了源码文件中的符 号的所有 header 文件。这样一来，你在源码文件和 header 文件对某些函数做出的矛盾声明可以比较容易的被编译器发现。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;1.4 对于常见错误的注释 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;a) 定义符 (Identifier) 在源码文件中的矛盾：在Ｃ里，变量和函数的缺 省状态是公用的。因此，任何Ｃ源码档案都可以引用存在于其它源 码档中的通用 (global) 函数和通用变量，既使这个档案没有那个变 量或函数的声明或原型。因此你必须保证在不同的两个档案里不能 用同一个符号名称，否则会有连接错误或者在编译时会有警告。 <br>&nbsp;&nbsp;&nbsp;&nbsp;一种避免这种错误的方法是在公用的符号前加上跟其所在源文件有 关的前缀。比如：所有在 gfx.c 里的函数都加上前缀&#8220;gfx_&#8221;。如果 你很小心的分解你的程序，使用有意义的函数名称，并且不是过分 使用通用变量，当然这根本就不是问题。 <br>&nbsp;&nbsp;&nbsp;&nbsp;要防止一个符号在它被定义的源文件以外被看到，可在它的定义前 加上关键字&#8220;static&#8221;。这对只在一个档案内部使用，其它档案都 都不会用到的简单函数是很有用的。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;b) 多次定义的符号： header 档会被逐字的替换到你源文件里 #include 的位置的。因此，如果 header 档被 #include 到一个以上的源文件 里，这个 header 档中所有的定义就会出现在每一个有关的源码文件 里。这会使它们里的符号被定义一次以上，从而出现连接错误（见 上）。 <br>&nbsp;&nbsp;&nbsp;&nbsp;解决方法： 不要在 header 档里定义变量。你只需要在 header 档里声明它们然后在适当的Ｃ源码文件（应该 #include 那个 header 档的那个）里定义它们（一次）。对于初学者来说，定义和声明是 很容易混淆的。声明的作用是告诉编译器其所声明的符号应该存在， 并且要有所指定的类型。但是，它并不会使编译器分配贮存空间。 而定义的做用是要求编译器分配贮存空间。当做一个声明而不是做 定义的时候，在声明前放一个关键字&#8220;extern&#8221;。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;例如，我们有一个叫&#8220;counter&#8221;的变量，如果想让它成为公用的， 我们在一个源码程序（只在一个里面）的开始定义它：&#8220;int counter;&#8221;，再在相关的 header 档里声明它：&#8220;extern int counter;&#8221;。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;函数原型里隐含着 extern 的意思，所以不需顾虑这个问题。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;c) 重复定义，重复声明，矛盾类型： <br>&nbsp;&nbsp;&nbsp;&nbsp;请考虑如果在一个Ｃ源码文件中 #include 两个档 a.h 和 b.h， 而 a.h 又 #include 了 b.h 档（原因是 b.h 档定义了一些 a.h 需要的类型），会发生什么事呢？这时该Ｃ源码文件 #include 了 b.h 两次。因此每一个在 b.h 中的 #define 都发生了两次，每一 个声明发生了两次，等等。理论上，因为它们是完全一样的拷贝， 所以应该不会有什么问题，但在实际应用上，这是不符合Ｃ的语法 的，可能在编译时出现错误，或至少是警告。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;解决的方法是要确定每一个 header 档在任一个源码文件中只被包 含了一次。我们一般是用预处理器来达到这个目的的。当我们进入 每一个 header 档时，我们为这个 header 档 #define 一个巨集 指令。只有在这个巨集指令没有被定义的前提下，我们才真正使用 该 header 档的主体。在实际应用上，我们只要简单的把下面一段 码放在每一个 header 档的开始部分： <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;#ifndef FILENAME_H <br>&nbsp;&nbsp;&nbsp;&nbsp;#define FILENAME_H <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;然后把下面一行码放在最后： <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;#endif <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;用 header 档的档名（大写的）代替上面的 FILENAME_H，用底线 代替档名中的点。有些人喜欢在 #endif 加上注释来提醒他们这个 #endif 指的是什么。例如： <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;#endif /* #ifndef FILENAME_H */ <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;我个人没有这个习惯，因为这其实是很明显的。当然这只是各人的 风格不同，无伤大雅。 <br>&nbsp;&nbsp;&nbsp;&nbsp;你只需要在那些有编译错误的 header 档中加入这个技巧，但在所 有的 header 档中都加入也没什么损失，到底这是个好习惯。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;1.5 重新编译一个多文件项目 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;清楚的区别编译和连接是很重要的。编译器使用源码文件来产生某种 形式的目标文件(object files)。在这个过程中，外部的符号参考并 没有被解释或替换。然后我们使用连接器来连接这些目标文件和一些 标准的程序包再加你指定的程序包，最后连接生成一个可执行程序。 在这个阶段，一个目标文件中对别的文件中的符号的参考被解释，并 报告不能被解释的参考，一般是以错误信息的形式报告出来。 <br>&nbsp;&nbsp;&nbsp;&nbsp;基本的步骤就应该是，把你的源码文件一个一个的编译成目标文件的格 式，最后把所有的目标文件加上需要的程序包连接成一个可执行文件。 具体怎么做是由你的编译器决定的。这里我只给出 gcc （GNU C 编译 器）的有关命令，这些有可能对你的非 gcc 编译器也适用。 <br>&nbsp;&nbsp;&nbsp;&nbsp;gcc 是一个多目标的工具。它在需要的时候呼叫其它的元件（预处理 程序，编译器，组合程序，连接器）。具体的哪些元件被呼叫取决于 输入文件的类型和你传递给它的开关。 <br>&nbsp;&nbsp;&nbsp;&nbsp;一般来说，如果你只给它Ｃ源码文件，它将预处理，编译，组合所有 的文件，然后把所得的目标文件连接成一个可执行文件（一般生成的 文件被命名为 a.out ）。你当然可以这么做，但这会破坏很多我们 把一个项目分解成多个文件所得到的好处。 <br>&nbsp;&nbsp;&nbsp;&nbsp;如果你给它一个 -c 开关，gcc 只把给它的文件编译成目标文件， 用源码文件的文件名命名但把其后缀由&#8220;.c&#8221;或&#8220;.cc&#8221;变成&#8220;.o&#8221;。 如果你给它的是一列目标文件， gcc 会把它们连接成可执行文件， 缺省文件名是 a.out 。你可以改变缺省名，用开关 -o 后跟你指定 的文件名。 <br>&nbsp;&nbsp;&nbsp;&nbsp;因此，当你改变了一个源码文件后，你需要重新编译它： 'gcc -c filename.c' 然后重新连接你的项目： 'gcc -o exec_filename *.o'。 如果你改变了一个 header 档，你需要重新编译所有 #include 过 这个档的源码文件，你可以用 'gcc -c file1.c file2.c file3.c' 然后象上边一样连接。 <br>&nbsp;&nbsp;&nbsp;&nbsp;当然这么做是很繁琐的，幸亏我们有些工具使这个步骤变得简单。 本文的第二部分就是介绍其中的一件工具：GNU Make 工具。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;（好家伙，现在才开始见真章。您学到点儿东西没？） <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;2) GNU Make 工具 <br>&nbsp;&nbsp;&nbsp;&nbsp;~~~~~~~~~~~~~~~~ <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;2.1 基本 makefile 结构 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;GNU Make 的主要工作是读进一个文本文件， makefile 。这个文 件里主要是有关哪些文件（&#8216;target&#8217;目的文件）是从哪些别的 文件（&#8216;dependencies&#8217;依靠文件）中产生的，用什么命令来进行 这个产生过程。有了这些信息， make 会检查磁碟上的文件，如果 目的文件的时间戳（该文件生成或被改动时的时间）比至少它的一 个依靠文件旧的话， make 就执行相应的命令，以便更新目的文件。 （目的文件不一定是最后的可执行档，它可以是任何一个文件。） <br>&nbsp;&nbsp;&nbsp;&nbsp;makefile 一般被叫做&#8220;makefile&#8221;或&#8220;Makefile&#8221;。当然你可以 在 make 的命令行指定别的文件名。如果你不特别指定，它会寻 找&#8220;makefile&#8221;或&#8220;Makefile&#8221;，因此使用这两个名字是最简单 的。 <br>&nbsp;&nbsp;&nbsp;&nbsp;一个 makefile 主要含有一系列的规则，如下： <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;: ... <br>&nbsp;&nbsp;&nbsp;&nbsp;(tab)<command> <br>&nbsp;&nbsp;&nbsp;&nbsp;(tab)<command> <br>&nbsp;&nbsp;&nbsp;&nbsp;. <br>&nbsp;&nbsp;&nbsp;&nbsp;. <br>&nbsp;&nbsp;&nbsp;&nbsp;. <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;例如，考虑以下的 makefile ： <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;=== makefile 开始 === <br>&nbsp;&nbsp;&nbsp;&nbsp;myprog : foo.o bar.o <br>&nbsp;&nbsp;&nbsp;&nbsp; gcc foo.o bar.o -o myprog <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;foo.o : foo.c foo.h bar.h <br>&nbsp;&nbsp;&nbsp;&nbsp; gcc -c foo.c -o foo.o <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;bar.o : bar.c bar.h <br>&nbsp;&nbsp;&nbsp;&nbsp; gcc -c bar.c -o bar.o <br>&nbsp;&nbsp;&nbsp;&nbsp;=== makefile 结束 === <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;这是一个非常基本的 makefile —— make 从最上面开始，把上 面第一个目的，&#8216;myprog&#8217;，做为它的主要目标（一个它需要保 证其总是最新的最终目标）。给出的规则说明只要文件&#8216;myprog&#8217; 比文件&#8216;foo.o&#8217;或&#8216;bar.o&#8217;中的任何一个旧，下一行的命令将 会被执行。 <br>&nbsp;&nbsp;&nbsp;&nbsp;但是，在检查文件 foo.o 和 bar.o 的时间戳之前，它会往下查 找那些把 foo.o 或 bar.o 做为目标文件的规则。它找到的关于 foo.o 的规则，该文件的依靠文件是 foo.c, foo.h 和 bar.h 。 它从下面再找不到生成这些依靠文件的规则，它就开始检查磁碟 上这些依靠文件的时间戳。如果这些文件中任何一个的时间戳比 foo.o 的新，命令 'gcc -o foo.o foo.c' 将会执行，从而更新 文件 foo.o 。 <br>&nbsp;&nbsp;&nbsp;&nbsp;接下来对文件 bar.o 做类似的检查，依靠文件在这里是文件 bar.c 和 bar.h 。 <br>&nbsp;&nbsp;&nbsp;&nbsp;现在， make 回到&#8216;myprog&#8217;的规则。如果刚才两个规则中的任 何一个被执行，myprog 就需要重建（因为其中一个 .o 档就会比 &#8216;myprog&#8217;新），因此连接命令将被执行。 <br>&nbsp;&nbsp;&nbsp;&nbsp;希望到此，你可以看出使用 make 工具来建立程序的好处——前 一章中所有繁琐的检查步骤都由 make 替你做了：检查时间戳。 你的源码文件里一个简单改变都会造成那个文件被重新编译（因 为 .o 文件依靠 .c 文件），进而可执行文件被重新连接（因为 .o 文件被改变了）。其实真正的得益是在当你改变一个 header 档的时候——你不再需要记住那个源码文件依靠它，因为所有的 资料都在 makefile 里。 make 会很轻松的替你重新编译所有那 些因依靠这个 header 文件而改变了的源码文件，如有需要，再 进行重新连接。 <br>&nbsp;&nbsp;&nbsp;&nbsp;当然，你要确定你在 makefile 中所写的规则是正确无误的，只 列出那些在源码文件中被 #include 的 header 档&#8230;&#8230; <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;2.2 编写 make 规则 (Rules) <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;最明显的（也是最简单的）编写规则的方法是一个一个的查 看源码文件，把它们的目标文件做为目的，而Ｃ源码文件和被它 #include 的 header 档做为依靠文件。但是你也要把其它被这些 header 档 #include 的 header 档也列为依靠文件，还有那些被 包括的文件所包括的文件&#8230;&#8230;然后你会发现要对越来越多的文件 进行管理，然后你的头发开始脱落，你的脾气开始变坏，你的脸 色变成菜色，你走在路上开始跟电线杆子碰撞，终于你捣毁你的 电脑显示器，停止编程。到低有没有些容易点儿的方法呢？ <br>&nbsp;&nbsp;&nbsp;&nbsp;当然有！向编译器要！在编译每一个源码文件的时候，它实在应 该知道应该包括什么样的 header 档。使用 gcc 的时候，用 -M 开关，它会为每一个你给它的Ｃ文件输出一个规则，把目标文件 做为目的，而这个Ｃ文件和所有应该被 #include 的 header 文 件将做为依靠文件。注意这个规则会加入所有 header 文件，包 括被角括号(`&lt;', `&gt;')和双引号(`"')所包围的文件。其实我们可以 相当肯定系统 header 档（比如 stdio.h, stdlib.h 等等）不会 被我们更改，如果你用 -MM 来代替 -M 传递给 gcc，那些用角括 号包围的 header 档将不会被包括。（这会节省一些编译时间） <br>&nbsp;&nbsp;&nbsp;&nbsp;由 gcc 输出的规则不会含有命令部分；你可以自己写入你的命令 或者什么也不写，而让 make 使用它的隐含的规则（参考下面的 2.4 节）。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;2.3 Makefile 变量 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;上面提到 makefiles 里主要包含一些规则。它们包含的其它的东 西是变量定义。 <br>&nbsp;&nbsp;&nbsp;&nbsp;makefile 里的变量就像一个环境变量(environment variable)。 事实上，环境变量在 make 过程中被解释成 make 的变量。这些 变量是大小写敏感的，一般使用大写字母。它们可以从几乎任何 地方被引用，也可以被用来做很多事情，比如： <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;i) 贮存一个文件名列表。在上面的例子里，生成可执行文件的 规则包含一些目标文件名做为依靠。在这个规则的命令行 里同样的那些文件被输送给 gcc 做为命令参数。如果在这 里使用一个变数来贮存所有的目标文件名，加入新的目标 文件会变的简单而且较不易出错。 <br>&nbsp;&nbsp;&nbsp;&nbsp;ii) 贮存可执行文件名。如果你的项目被用在一个非 gcc 的系 统里，或者如果你想使用一个不同的编译器，你必须将所 有使用编译器的地方改成用新的编译器名。但是如果使用一 个变量来代替编译器名，那么你只需要改变一个地方，其 它所有地方的命令名就都改变了。 <br>&nbsp;&nbsp;&nbsp;&nbsp;iii) 贮存编译器旗标。假设你想给你所有的编译命令传递一组 相同的选项（例如 -Wall -O -g）；如果你把这组选项存 入一个变量，那么你可以把这个变量放在所有呼叫编译器 的地方。而当你要改变选项的时候，你只需在一个地方改 变这个变量的内容。 <br>&nbsp;&nbsp;&nbsp;&nbsp;要设定一个变量，你只要在一行的开始写下这个变量的名字，后 面跟一个 = 号，后面跟你要设定的这个变量的值。以后你要引用 这个变量，写一个 $ 符号，后面是围在括号里的变量名。比如在 下面，我们把前面的 makefile 利用变量重写一遍： <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;=== makefile 开始 === <br>&nbsp;&nbsp;&nbsp;&nbsp;OBJS = foo.o bar.o <br>&nbsp;&nbsp;&nbsp;&nbsp;CC = gcc <br>&nbsp;&nbsp;&nbsp;&nbsp;CFLAGS = -Wall -O -g <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;myprog : $(OBJS) <br>&nbsp;&nbsp;&nbsp;&nbsp; $(CC) $(OBJS) -o myprog <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;foo.o : foo.c foo.h bar.h <br>&nbsp;&nbsp;&nbsp;&nbsp; $(CC) $(CFLAGS) -c foo.c -o foo.o <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;bar.o : bar.c bar.h <br>&nbsp;&nbsp;&nbsp;&nbsp; $(CC) $(CFLAGS) -c bar.c -o bar.o <br>&nbsp;&nbsp;&nbsp;&nbsp;=== makefile 结束 === <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;还有一些设定好的内部变量，它们根据每一个规则内容定义。三个 比较有用的变量是 $@, $&lt;和 $^ （这些变量不需要括号括住）。 $@ 扩展成当前规则的目的文件名， $&lt; 扩展成依靠列表中的第 一个依靠文件，而 $^ 扩展成整个依靠的列表（除掉了里面所有重 复的文件名）。利用这些变量，我们可以把上面的 makefile 写成： <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;=== makefile 开始 === <br>&nbsp;&nbsp;&nbsp;&nbsp;OBJS = foo.o bar.o <br>&nbsp;&nbsp;&nbsp;&nbsp;CC = gcc <br>&nbsp;&nbsp;&nbsp;&nbsp;CFLAGS = -Wall -O -g <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;myprog : $(OBJS) <br>&nbsp;&nbsp;&nbsp;&nbsp; $(CC) $^ -o $@ <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;foo.o : foo.c foo.h bar.h <br>&nbsp;&nbsp;&nbsp;&nbsp; $(CC) $(CFLAGS) -c $&lt;-o $@ <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;bar.o : bar.c bar.h <br>&nbsp;&nbsp;&nbsp;&nbsp; $(CC) $(CFLAGS) -c $&lt;-o $@ <br>&nbsp;&nbsp;&nbsp;&nbsp;=== makefile 结束 === <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;你可以用变量做许多其它的事情，特别是当你把它们和函数混合 使用的时候。如果需要更进一步的了解，请参考 GNU Make 手册。 ('man make', 'man makefile') <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;2.4 隐含规则 (Implicit Rules) <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;请注意，在上面的例子里，几个产生 .o 文件的命令都是一样的。 都是从 .c 文件和相关文件里产生 .o 文件，这是一个标准的步 骤。其实 make 已经知道怎么做——它有一些叫做隐含规则的内 置的规则，这些规则告诉它当你没有给出某些命令的时候，应该 怎么办。 <br>&nbsp;&nbsp;&nbsp;&nbsp;如果你把生成 foo.o 和 bar.o 的命令从它们的规则中删除， make 将会查找它的隐含规则，然后会找到一个适当的命令。它的命令会 使用一些变量，因此你可以按照你的想法来设定它：它使用变量 CC 做为编译器（象我们在前面的例子），并且传递变量 CFLAGS （给 C 编译器，C++ 编译器用 CXXFLAGS ），CPPFLAGS （ C 预 处理器旗标）， TARGET_ARCH （现在不用考虑这个），然后它加 入旗标 '-c' ，后面跟变量 $&lt;（第一个依靠名），然后是旗 标 '-o' 跟变量 $@ （目的文件名）。一个Ｃ编译的具体命令将 会是： <br>&nbsp;&nbsp;&nbsp;&nbsp;$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c $&lt;-o $@ <br>&nbsp;&nbsp;&nbsp;&nbsp;当然你可以按照你自己的需要来定义这些变量。这就是为什么用 gcc 的 -M 或 -MM 开关输出的码可以直接用在一个 makefile 里。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;2.5 假象目的 (Phony Targets) <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;假设你的一个项目最后需要产生两个可执行文件。你的主要目标 是产生两个可执行文件，但这两个文件是相互独立的——如果一 个文件需要重建，并不影响另一个。你可以使用&#8220;假象目的&#8221;来 达到这种效果。一个假象目的跟一个正常的目的几乎是一样的， 只是这个目的文件是不存在的。因此， make 总是会假设它需要 被生成，当把它的依赖文件更新后，就会执行它的规则里的命令 行。 <br>&nbsp;&nbsp;&nbsp;&nbsp;如果在我们的 makefile 开始处输入： <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;all : exec1 exec2 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;其中 exec1 和 exec2 是我们做为目的的两个可执行文件。 make 把这个 'all' 做为它的主要目的，每次执行时都会尝试把 'all' 更新。但既然这行规则里没有哪个命令来作用在一个叫 'all' 的 实际文件（事实上 all 并不会在磁碟上实际产生），所以这个规 则并不真的改变 'all' 的状态。可既然这个文件并不存在，所以 make 会尝试更新 all 规则，因此就检查它的依靠 exec1, exec2 是否需要更新，如果需要，就把它们更新，从而达到我们的目的。 <br>&nbsp;&nbsp;&nbsp;&nbsp;假象目的也可以用来描述一组非预设的动作。例如，你想把所有由 make 产生的文件删除，你可以在 makefile 里设立这样一个规则： <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;veryclean : <br>&nbsp;&nbsp;&nbsp;&nbsp; rm *.o <br>&nbsp;&nbsp;&nbsp;&nbsp; rm myprog <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;前提是没有其它的规则依靠这个 'veryclean' 目的，它将永远 不会被执行。但是，如果你明确的使用命令 'make veryclean' ， make 会把这个目的做为它的主要目标，执行那些 rm 命令。 <br>&nbsp;&nbsp;&nbsp;&nbsp;如果你的磁碟上存在一个叫 veryclean 文件，会发生什么事？这 时因为在这个规则里没有任何依靠文件，所以这个目的文件一定是 最新的了（所有的依靠文件都已经是最新的了），所以既使用户明 确命令 make 重新产生它，也不会有任何事情发生。解决方法是标 明所有的假象目的（用 .PHONY），这就告诉 make 不用检查它们 是否存在于磁碟上，也不用查找任何隐含规则，直接假设指定的目 的需要被更新。在 makefile 里加入下面这行包含上面规则的规则： <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;.PHONY : veryclean <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;就可以了。注意，这是一个特殊的 make 规则，make 知道 .PHONY 是一个特殊目的，当然你可以在它的依靠里加入你想用的任何假象 目的，而 make 知道它们都是假象目的。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;2.6 函数 (Functions) <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;makefile 里的函数跟它的变量很相似——使用的时候，你用一个 $ 符号跟开括号，函数名，空格后跟一列由逗号分隔的参数，最后 用关括号结束。例如，在 GNU Make 里有一个叫 'wildcard' 的函 数，它有一个参数，功能是展开成一列所有符合由其参数描述的文 件名，文件间以空格间隔。你可以像下面所示使用这个命令： <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;SOURCES = $(wildcard *.c) <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;这行会产生一个所有以 '.c' 结尾的文件的列表，然后存入变量 SOURCES 里。当然你不需要一定要把结果存入一个变量。 <br>&nbsp;&nbsp;&nbsp;&nbsp;另一个有用的函数是 patsubst （ patten substitude, 匹配替 换的缩写）函数。它需要３个参数——第一个是一个需要匹配的式样，第二个表示用什么来替换它，第三个是一个需要被处理的 由空格分隔的字列。例如，处理那个经过上面定义后的变量， <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;OBJS = $(patsubst %.c,%.o,$(SOURCES)) <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;这行将处理所有在 SOURCES 字列中的字（一列文件名），如果它的 结尾是 '.c' ，就用 '.o' 把 '.c' 取代。注意这里的 % 符号将匹 配一个或多个字符，而它每次所匹配的字串叫做一个&#8216;柄&#8217;(stem) 。 在第二个参数里， % 被解读成用第一参数所匹配的那个柄。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;2.7 一个比较有效的 makefile <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;利用我们现在所学的，我们可以建立一个相当有效的 makefile 。 这个 makefile 可以完成大部分我们需要的依靠检查，不用做太大 的改变就可直接用在大多数的项目里。 <br>&nbsp;&nbsp;&nbsp;&nbsp;首先我们需要一个基本的 makefile 来建我们的程序。我们可以让 它搜索当前目录，找到源码文件，并且假设它们都是属于我们的项 目的，放进一个叫 SOURCES 的变量。这里如果也包含所有的 *.cc 文件，也许会更保险，因为源码文件可能是 C++ 码的。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;SOURCES = $(wildcard *.c *.cc) <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;利用 patsubst ，我们可以由源码文件名产生目标文件名，我们需 要编译出这些目标文件。如果我们的源码文件既有 .c 文件，也有 .cc 文件，我们需要使用相嵌的 patsubst 函数呼叫： <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;OBJS = $(patsubst %.c,%.o,$(patsubst %.cc,%.o,$(SOURCES))) <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;最里面一层 patsubst 的呼叫会对 .cc 文件进行后缀替代，产生的结 果被外层的 patsubst 呼叫处理，进行对 .c 文件后缀的替代。 <br>&nbsp;&nbsp;&nbsp;&nbsp;现在我们可以设立一个规则来建可执行文件： <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;myprog : $(OBJS) <br>&nbsp;&nbsp;&nbsp;&nbsp; gcc -o myprog $(OBJS) <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;进一步的规则不一定需要， gcc 已经知道怎么去生成目标文件 (object files) 。下面我们可以设定产生依靠信息的规则： <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;depends : $(SOURCES) <br>&nbsp;&nbsp;&nbsp;&nbsp; gcc -M $(SOURCES) &gt; depends <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;在这里如果一个叫 'depends' 的文件不存在，或任何一个源码文件 比一个已存在的 depends 文件新，那么一个 depends 文件会被生 成。depends 文件将会含有由 gcc 产生的关于源码文件的规则（注 意 -M 开关）。现在我们要让 make 把这些规则当做 makefile 档 的一部分。这里使用的技巧很像 C 语言中的 #include 系统——我 们要求 make 把这个文件 include 到 makefile 里，如下： <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;include depends <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;GNU Make 看到这个，检查 'depends' 目的是否更新了，如果没有， 它用我们给它的命令重新产生 depends 档。然后它会把这组（新） 规则包含进来，继续处理最终目标 'myprog' 。当看到有关 myprog 的规则，它会检查所有的目标文件是否更新——利用 depends 文件 里的规则，当然这些规则现在已经是更新过的了。 <br>&nbsp;&nbsp;&nbsp;&nbsp;这个系统其实效率很低，因为每当一个源码文件被改动，所有的源码 文件都要被预处理以产生一个新的 'depends' 文件。而且它也不是 100% 的安全，这是因为当一个 header 档被改动，依靠信息并不会 被更新。但就基本工作来说，它也算相当有用的了。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;2.8 一个更好的 makefile <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;这是一个我为我大多数项目设计的 makefile 。它应该可以不需要修 改的用在大部分项目里。我主要把它用在 djgpp 上，那是一个 DOS 版的 gcc 编译器。因此你可以看到执行的命令名、 'alleg' 程序包、 和 RM -F 变量都反映了这一点。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;=== makefile 开始 === <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;###################################### <br>&nbsp;&nbsp;&nbsp;&nbsp;# <br>&nbsp;&nbsp;&nbsp;&nbsp;# Generic makefile <br>&nbsp;&nbsp;&nbsp;&nbsp;# <br>&nbsp;&nbsp;&nbsp;&nbsp;# by George Foot <br>&nbsp;&nbsp;&nbsp;&nbsp;# email: george.foot@merton.ox.ac.uk <br>&nbsp;&nbsp;&nbsp;&nbsp;# <br>&nbsp;&nbsp;&nbsp;&nbsp;# Copyright (c) 1997 George Foot <br>&nbsp;&nbsp;&nbsp;&nbsp;# All rights reserved. <br>&nbsp;&nbsp;&nbsp;&nbsp;# 保留所有版权 <br>&nbsp;&nbsp;&nbsp;&nbsp;# <br>&nbsp;&nbsp;&nbsp;&nbsp;# No warranty, no liability; <br>&nbsp;&nbsp;&nbsp;&nbsp;# you use this at your own risk. <br>&nbsp;&nbsp;&nbsp;&nbsp;# 没保险，不负责 <br>&nbsp;&nbsp;&nbsp;&nbsp;# 你要用这个，你自己担风险 <br>&nbsp;&nbsp;&nbsp;&nbsp;# <br>&nbsp;&nbsp;&nbsp;&nbsp;# You are free to modify and <br>&nbsp;&nbsp;&nbsp;&nbsp;# distribute this without giving <br>&nbsp;&nbsp;&nbsp;&nbsp;# credit to the original author. <br>&nbsp;&nbsp;&nbsp;&nbsp;# 你可以随便更改和散发这个文件 <br>&nbsp;&nbsp;&nbsp;&nbsp;# 而不需要给原作者什么荣誉。 <br>&nbsp;&nbsp;&nbsp;&nbsp;# （你好意思？） <br>&nbsp;&nbsp;&nbsp;&nbsp;# <br>&nbsp;&nbsp;&nbsp;&nbsp;###################################### <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;### Customising <br>&nbsp;&nbsp;&nbsp;&nbsp;# 用户设定 <br>&nbsp;&nbsp;&nbsp;&nbsp;# <br>&nbsp;&nbsp;&nbsp;&nbsp;# Adjust the following if necessary; EXECUTABLE is the target <br>&nbsp;&nbsp;&nbsp;&nbsp;# executable's filename, and LIBS is a list of libraries to link in <br>&nbsp;&nbsp;&nbsp;&nbsp;# (e.g. alleg, stdcx, iostr, etc). You can override these on make's <br>&nbsp;&nbsp;&nbsp;&nbsp;# command line of course, if you prefer to do it that way. <br>&nbsp;&nbsp;&nbsp;&nbsp;# <br>&nbsp;&nbsp;&nbsp;&nbsp;# 如果需要，调整下面的东西。 EXECUTABLE 是目标的可执行文件名， LIBS <br>&nbsp;&nbsp;&nbsp;&nbsp;# 是一个需要连接的程序包列表（例如 alleg, stdcx, iostr 等等）。当然你 <br>&nbsp;&nbsp;&nbsp;&nbsp;# 可以在 make 的命令行覆盖它们，你愿意就没问题。 <br>&nbsp;&nbsp;&nbsp;&nbsp;# <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;EXECUTABLE := mushroom.exe <br>&nbsp;&nbsp;&nbsp;&nbsp;LIBS := alleg <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;# Now alter any implicit rules' variables if you like, e.g.: <br>&nbsp;&nbsp;&nbsp;&nbsp;# <br>&nbsp;&nbsp;&nbsp;&nbsp;# 现在来改变任何你想改动的隐含规则中的变量，例如 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;CFLAGS := -g -Wall -O3 -m486 <br>&nbsp;&nbsp;&nbsp;&nbsp;CXXFLAGS := $(CFLAGS) <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;# The next bit checks to see whether rm is in your djgpp bin <br>&nbsp;&nbsp;&nbsp;&nbsp;# directory; if not it uses del instead, but this can cause (harmless) <br>&nbsp;&nbsp;&nbsp;&nbsp;# `File not found' error messages. If you are not using DOS at all, <br>&nbsp;&nbsp;&nbsp;&nbsp;# set the variable to something which will unquestioningly remove <br>&nbsp;&nbsp;&nbsp;&nbsp;# files. <br>&nbsp;&nbsp;&nbsp;&nbsp;# <br>&nbsp;&nbsp;&nbsp;&nbsp;# 下面先检查你的 djgpp 命令目录下有没有 rm 命令，如果没有，我们使用 <br>&nbsp;&nbsp;&nbsp;&nbsp;# del 命令来代替，但有可能给我们 'File not found' 这个错误信息，这没 <br>&nbsp;&nbsp;&nbsp;&nbsp;# 什么大碍。如果你不是用 DOS ，把它设定成一个删文件而不废话的命令。 <br>&nbsp;&nbsp;&nbsp;&nbsp;# （其实这一步在 UNIX 类的系统上是多余的，只是方便 DOS 用户。 UNIX <br>&nbsp;&nbsp;&nbsp;&nbsp;# 用户可以删除这５行命令。） <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;ifneq ($(wildcard $(DJDIR)/bin/rm.exe),) <br>&nbsp;&nbsp;&nbsp;&nbsp;RM-F := rm -f <br>&nbsp;&nbsp;&nbsp;&nbsp;else <br>&nbsp;&nbsp;&nbsp;&nbsp;RM-F := del <br>&nbsp;&nbsp;&nbsp;&nbsp;endif <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;# You shouldn't need to change anything below this point. <br>&nbsp;&nbsp;&nbsp;&nbsp;# <br>&nbsp;&nbsp;&nbsp;&nbsp;# 从这里开始，你应该不需要改动任何东西。（我是不太相信，太ＮＢ了！） <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;SOURCE := $(wildcard *.c) $(wildcard *.cc) <br>&nbsp;&nbsp;&nbsp;&nbsp;OBJS := $(patsubst %.c,%.o,$(patsubst %.cc,%.o,$(SOURCE))) <br>&nbsp;&nbsp;&nbsp;&nbsp;DEPS := $(patsubst %.o,%.d,$(OBJS)) <br>&nbsp;&nbsp;&nbsp;&nbsp;MISSING_DEPS := $(filter-out $(wildcard $(DEPS)),$(DEPS)) <br>&nbsp;&nbsp;&nbsp;&nbsp;MISSING_DEPS_SOURCES := $(wildcard $(patsubst %.d,%.c,$(MISSING_DEPS)) \ <br>&nbsp;&nbsp;&nbsp;&nbsp;$(patsubst %.d,%.cc,$(MISSING_DEPS))) <br>&nbsp;&nbsp;&nbsp;&nbsp;CPPFLAGS += -MD <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;.PHONY : everything deps objs clean veryclean rebuild <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;everything : $(EXECUTABLE) <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;deps : $(DEPS) <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;objs : $(OBJS) <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;clean : <br>&nbsp;&nbsp;&nbsp;&nbsp; @$(RM-F) *.o <br>&nbsp;&nbsp;&nbsp;&nbsp; @$(RM-F) *.d <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;veryclean: clean <br>&nbsp;&nbsp;&nbsp;&nbsp; @$(RM-F) $(EXECUTABLE) <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;rebuild: veryclean everything <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;ifneq ($(MISSING_DEPS),) <br>&nbsp;&nbsp;&nbsp;&nbsp;$(MISSING_DEPS) : <br>&nbsp;&nbsp;&nbsp;&nbsp; @$(RM-F) $(patsubst %.d,%.o,$@) <br>&nbsp;&nbsp;&nbsp;&nbsp;endif <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;-include $(DEPS) <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;$(EXECUTABLE) : $(OBJS) <br>&nbsp;&nbsp;&nbsp;&nbsp; gcc -o $(EXECUTABLE) $(OBJS) $(addprefix -l,$(LIBS)) <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;=== makefile 结束 === <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;有几个地方值得解释一下的。首先，我在定义大部分变量的时候使 用的是 := 而不是 = 符号。它的作用是立即把定义中参考到的函 数和变量都展开了。如果使用 = 的话，函数和变量参考会留在那 儿，就是说改变一个变量的值会导致其它变量的值也被改变。例 如： <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;A = foo <br>&nbsp;&nbsp;&nbsp;&nbsp;B = $(A) <br>&nbsp;&nbsp;&nbsp;&nbsp;# 现在 B 是 $(A) ，而 $(A) 是 'foo' 。 <br>&nbsp;&nbsp;&nbsp;&nbsp;A = bar <br>&nbsp;&nbsp;&nbsp;&nbsp;# 现在 B 仍然是 $(A) ，但它的值已随着变成 'bar' 了。 <br>&nbsp;&nbsp;&nbsp;&nbsp;B := $(A) <br>&nbsp;&nbsp;&nbsp;&nbsp;# 现在 B 的值是 'bar' 。 <br>&nbsp;&nbsp;&nbsp;&nbsp;A = foo <br>&nbsp;&nbsp;&nbsp;&nbsp;# B 的值仍然是 'bar' 。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;make 会忽略在 # 符号后面直到那一行结束的所有文字。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;ifneg...else...endif 系统是 makefile 里让某一部分码有条件的 失效／有效的工具。 ifeq 使用两个参数，如果它们相同，它把直 到 else （或者 endif ，如果没有 else 的话）的一段码加进 makefile 里；如果不同，把 else 到 endif 间的一段码加入 makefile （如果有 else ）。 ifneq 的用法刚好相反。 <br>&nbsp;&nbsp;&nbsp;&nbsp;'filter-out' 函数使用两个用空格分开的列表，它把第二列表中所 有的存在于第一列表中的项目删除。我用它来处理 DEPS 列表，把所 有已经存在的项目都删除，而只保留缺少的那些。 <br>&nbsp;&nbsp;&nbsp;&nbsp;我前面说过， CPPFLAGS 存有用于隐含规则中传给预处理器的一些 旗标。而 -MD 开关类似 -M 开关，但是从源码文件 .c 或 .cc 中 形成的文件名是使用后缀 .d 的（这就解释了我形成 DEPS 变量的 步骤）。DEPS 里提到的文件后来用 '-include' 加进了 makefile 里，它隐藏了所有因文件不存在而产生的错误信息。 <br>&nbsp;&nbsp;&nbsp;&nbsp;如果任何依靠文件不存在， makefile 会把相应的 .o 文件从磁碟 上删除，从而使得 make 重建它。因为 CPPFLAGS 指定了 -MD ， 它的 .d 文件也被重新产生。 <br>&nbsp;&nbsp;&nbsp;&nbsp;最后， 'addprefix' 函数把第二个参数列表的每一项前缀上第一 个参数值。 <br>&nbsp;&nbsp;&nbsp;&nbsp;这个 makefile 的那些目的是（这些目的可以传给 make 的命令行 来直接选用）： <br>&nbsp;&nbsp;&nbsp;&nbsp;everything:（预设） 更新主要的可执行程序，并且为每一个 源码文件生成或更新一个 '.d' 文件和一个 '.o' 文件。 <br>&nbsp;&nbsp;&nbsp;&nbsp;deps: 只是为每一个源码程序产生或更新一个 '.d' 文件。 <br>&nbsp;&nbsp;&nbsp;&nbsp;objs: 为每一个源码程序生成或更新 '.d' 文件和目标文件。 <br>&nbsp;&nbsp;&nbsp;&nbsp;clean: 删除所有中介／依靠文件（ *.d 和 *.o ）。 <br>&nbsp;&nbsp;&nbsp;&nbsp;veryclean: 做 `clean' 和删除可执行文件。 <br>&nbsp;&nbsp;&nbsp;&nbsp;rebuild: 先做 `veryclean' 然后 `everything' ；既完全重建。 <br>&nbsp;&nbsp;&nbsp;&nbsp;除了预设的 everything 以外，这里头只有 clean ， veryclean ， 和 rebuild 对用户是有意义的。 <br>&nbsp;&nbsp;&nbsp;&nbsp;我还没有发现当给出一个源码文件的目录，这个 makefile 会失败的 情况，除非依靠文件被弄乱。如果这种弄乱的情况发生了，只要输入 `make clean' ，所有的目标文件和依靠文件会被删除，问题就应该 被解决了。当然，最好不要把它们弄乱。如果你发现在某种情况下这 个 makefile 文件不能完成它的工作，请告诉我，我会把它整好的。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;3 总结 <br>&nbsp;&nbsp;&nbsp;&nbsp;~~~~~~~~~~~~~~~ <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;我希望这篇文章足够详细的解释了多文件项目是怎么运作的，也说明了 怎样安全而合理的使用它。到此，你应该可以轻松的利用 GNU Make 工 具来管理小型的项目，如果你完全理解了后面几个部分的话，这些对于 你来说应该没什么困难。 <br>&nbsp;&nbsp;&nbsp;&nbsp;GNU Make 是一件强大的工具，虽然它主要是用来建立程序，它还有很多 别的用处。如果想要知道更多有关这个工具的知识，它的句法，函数， 和许多别的特点，你应该参看它的参考文件 (info pages, 别的 GNU 工具也一样，看它们的 info pages. )。 <br>&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;C Scene 官方网站： <a href="http://cscene.differnet.org/" target=_blank><u><font color=#0000ff>http://cscene.differnet.org</font></u></a> <br>&nbsp;&nbsp;&nbsp;&nbsp;C Scene 官方电邮： cscene@mindless.com <br>&nbsp;&nbsp;&nbsp;&nbsp;This page is Copyright ? 1997 By C Scene. All Rights Reserved </font>
    <p>&#160;</p>
    <p>&#160;</p>
    <tbody>
    </tbody>
    </p>
</table>
<img src ="http://www.cppblog.com/xingjiegaojue/aggbug/113388.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xingjiegaojue/" target="_blank">张纶</a> 2010-04-23 23:33 <a href="http://www.cppblog.com/xingjiegaojue/archive/2010/04/23/113388.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>OpenGL红宝书之随笔</title><link>http://www.cppblog.com/xingjiegaojue/archive/2010/04/03/111544.html</link><dc:creator>张纶</dc:creator><author>张纶</author><pubDate>Sat, 03 Apr 2010 15:44:00 GMT</pubDate><guid>http://www.cppblog.com/xingjiegaojue/archive/2010/04/03/111544.html</guid><wfw:comment>http://www.cppblog.com/xingjiegaojue/comments/111544.html</wfw:comment><comments>http://www.cppblog.com/xingjiegaojue/archive/2010/04/03/111544.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xingjiegaojue/comments/commentRss/111544.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xingjiegaojue/services/trackbacks/111544.html</trackback:ping><description><![CDATA[一、窗口管理<br>&nbsp;&nbsp;&nbsp; GLUT用5个函数执行初始化窗口所需要到任务：<br>&nbsp;&nbsp;&nbsp; 1、glutInit(int *argc,char** argv)对GLUT进行初始化，并处理所有命令行参数。glutInit()应该在调用任何其他GLUT函数之前被调用。<br>&nbsp;&nbsp;&nbsp; 2、glutInitDisplayMode(unsigned int mode)指定使用RGBA还是颜色索引模式。还可以指定使用单缓冲还是双缓冲。最后，可以使用这个函数来表示希望窗口拥有相关联到深度、模板、多重采样和/或累积缓冲区。例如，如果需要一个双缓冲、RGBA颜色模式以及一个深度缓冲区到窗口，可以调用glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH)。<br>&nbsp;&nbsp;&nbsp; 3、glutInitWindowPosition(int x,int y)指定了窗口左上角到屏幕位置。<br>&nbsp;&nbsp;&nbsp; 4、glutInitWindowSize(int width,int size)指定了窗口的大小(以像素为单位)。<br>&nbsp;&nbsp;&nbsp; 5、int glutCreateWindow(char* string)创建了一个带有OpenGL渲染环境的窗口。这个函数为新窗口返回一个唯一到标识符。注意：在调用glutMainLoop()函数之前，这个窗口并没有被显示。<br>&nbsp;&nbsp;&nbsp; <br>二、显示回调函数<br>&nbsp;&nbsp;&nbsp; glutDisplayFunc(void(*func)(void))是所看到到第一个也是最为重要的事件回调函数。每当GLUT确定一个窗口的内容需要重新显示时，通过glutDisplayFunc()所注册的那个回调函数就会被执行。因此，应该把重绘场景所需要的所有代码都放在这个显示回调函数里。<br>&nbsp;&nbsp;&nbsp; 如果程序修改了窗口的内容，有时候必须调用glutPostRedisplay()，后者将提示glutMainLoop()在它的下一个时机调用已注册的显示回调函数。<br>&nbsp;&nbsp;&nbsp; <br>三、运行程序<br>&nbsp;&nbsp;&nbsp; 最后，必须被调用glutMainLoop()。所有已经创建的窗口将在此显示，对那些窗口到渲染也开始生效。事件处理开始启动，已注册到显示回调函数被触发。一旦进入循环，它就永远不会退出。<br>&nbsp;&nbsp;&nbsp; <br>四、处理输入事件<br>&nbsp;&nbsp;&nbsp; 可以使用下面这些函数注册回调函数，当指定的事件发生时，这些函数便会被调用：<br>&nbsp;&nbsp;&nbsp; glutReshapeFunc(void(*func)int w,int h))表示当窗口的大小发生改变时应该采取什么行动。<br>&nbsp;&nbsp;&nbsp; glutKeyboardFunc(void(*func)(unsigned char key,int x,int y))和glutMouseFunc(void(*func)(int button,int state,int x,int y))允许把键盘上的一个键或者鼠标上的一个按钮与一个函数相关联，当这个键或按钮被按下或释放时，这个函数就会被调用。<br>&nbsp;&nbsp;&nbsp; glutMotionFunc(void(*func)(int x,int y))注册了一个函数，当一个鼠标按钮被按下时移动鼠标时，这个函数就会被调用。<br>&nbsp;&nbsp;&nbsp; <br>五、管理后台进程<br>&nbsp;&nbsp;&nbsp; 可以在glutIdleFunc(void(*func)(void))函数中指定一个函数，如果不存在其他尚未处理到事件(例如，当事件循环处于空闲的时候)，就执行这个函数。这个函数接受一个函数指针作为它的唯一参数。如果传递NULL(0)，就相当于禁用这个函数。<br>&nbsp;&nbsp;&nbsp; <br>六、绘制三维物体<br>&nbsp;&nbsp;&nbsp; GLUT包含了几个函数，用于绘制下面这些三维物体：<br>&nbsp;&nbsp;&nbsp; 圆锥体&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 二十面体&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 茶壶<br>&nbsp;&nbsp;&nbsp; 立方体&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 八面体&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 四面体<br>&nbsp;&nbsp;&nbsp; 十二面体&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 球体&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 圆环面<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; void glutWireCube(GLdouble size);<br>&nbsp;&nbsp;&nbsp; void glutSolidCube(GLdouble size);<br>&nbsp;&nbsp;&nbsp; void glutWireSphere(GLdoublw radius,GLint slices,GLint stacks);<br>&nbsp;&nbsp;&nbsp; void glutSolidSphere(GLdouble radius,GLInt slices,GLint stacks);<br>&nbsp;&nbsp;&nbsp; <br>七、清除窗口<br>&nbsp;&nbsp;&nbsp; 在计算机中，保存图片的内存通常被计算机所绘制到前一幅图像所填满，因此在绘制新场景之前需要把它清除为某种背景颜色。如果是字处理程序，在绘制新文本之前把背景清除为白色。如果所绘的是在航天飞机上所看到的太空景象，那么在开始绘制恒星、行星以及外星人到飞船之前需要把背景清除为黑色。也有时候，背景并不需要清除。<br>&nbsp;&nbsp;&nbsp; 清除窗口这种方式有几点优势。首先，特殊的清除窗口函数的效率可能远远高于普通的绘图函数。其次，就像在之前所看到到那样，OpenGL允许任意设置坐标系统、观察点和观察方向。这样一来，判断窗口清除矩形的大小和位置就可能非常困难。最后，在许多机器上，图形硬件除了包含被显示到像素颜色的缓冲区之外，还包含许多别的缓冲区。这些缓冲区随时可能被清除，如果有一条命令能够按照任意组合形式清除这些缓冲区，无疑是非常方便的。<br>&nbsp;&nbsp;&nbsp; 例如，下面这两行代码把一个RGBA模式的窗口清除为黑色。<br>&nbsp;&nbsp;&nbsp; glCLearColor(0.0,0.0,0.0,0.0);<br>&nbsp;&nbsp;&nbsp; glClear(GL_COLOR_BUFFER_BIT);<br>&nbsp;&nbsp;&nbsp; 第一行代码把清除颜色设置为黑色，第二行代码把整个窗口清除为当前的清除颜色。glClear()的唯一参数表示需要被清除的缓冲区。在这个例子里，程序只清除颜色缓冲区，显示在屏幕上的图像仍然保持原样。例如，为了同时清除颜色缓冲区和深度缓冲区，只要使用下面这个操作序列就可以：<br>&nbsp;&nbsp;&nbsp; glClearColor(0.0,0.0,0.0,0.0);<br>&nbsp;&nbsp;&nbsp; glClearDepth(1.0);<br>&nbsp;&nbsp;&nbsp; glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);<br>&nbsp;&nbsp;&nbsp; 在上面到代码里，glClearColor()函数的作用和前一段代码相同。glClearDepth()函数指定了深度缓冲区中的每个像素需要被设置的值。<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; void glClearColor(GLclampf red,GLclampf green,GLclampf blue,GLclampf alpha);<br>&nbsp;&nbsp;&nbsp; void glClear(GLbitfield mask);<br>&nbsp;&nbsp;&nbsp; 用当前的缓冲区清除指定的缓冲区。mask参数的值如下：<br>&nbsp;&nbsp;&nbsp; 缓冲区&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 名称&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 颜色缓冲区&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GL_COLOR_BUFFER_BIT<br>&nbsp;&nbsp;&nbsp; 深度缓冲区&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GL_DEPTH_BUFFER_BIT<br>&nbsp;&nbsp;&nbsp; 累积缓冲区&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GL_ACCUM_BUFFER_BIT<br>&nbsp;&nbsp;&nbsp; 模版缓冲区&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GL_SIENCIL_BUFFER_BIT<br>&nbsp;&nbsp;&nbsp; <br>八、强制完成绘图操作<br>&nbsp;&nbsp;&nbsp; glFlush()并不等待绘图完成，它只是强制绘图命令开始执行，因此保证所有的命令都在有限的时间内执行，即使在此之后并没有任何渲染命令需要执行。<br>&nbsp;&nbsp;&nbsp; <br>九、坐标系统工具箱<br>&nbsp;&nbsp;&nbsp; 无论是在刚打开窗口的时候，还是在以后移动窗口或改变窗口大小的时候，窗口系统都会发送一个事件来通知你。如果使用是GLUT，它会自动产生通知，并且在glutReshapeFunc()中注册的那个函数将会调用。必须注册一个回调函数，完成下列任务：<br>&nbsp;&nbsp;&nbsp; 1、重新建立一个矩形区域，把它作为新的渲染画布<br>&nbsp;&nbsp;&nbsp; 2、定义一个用于绘制物体的坐标系统<br>&nbsp;&nbsp;&nbsp; 例如，可以调用glutReshapeFunc(reshape),其中reshape(int w,int h)。<br>&nbsp;&nbsp;&nbsp; void reshape(int w,int h)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; glViewport(0,0,(GLsizei)w,(GLsizei)h);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; glMatrixMode(GL_PROJECTION);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; glLoadIdentity();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gluOrtho2D(0.0,(GLdouble) w,0.0,(GLdouble) h);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; 在系统内部，GLUT向这个函数传递两个参数：width和height，它们表示这个新的(或经过移动的、或改变了大小的)窗口的宽度和高度(以像素为单位)。glViewport()函数调整用于绘图的像素矩形，使它占据整个新窗口。接下来的3行代码调整用于绘图的坐标系统，使左下角到坐标为(0,0)，右上角的坐标为(w,h)。gluOrtho2D函数的作用就是，指定这个2D平面的左，右，上，下的坐标，以指定整个坐标系，想要将OpenGL的坐标体系换成windows那样，只需要如下调用gluOrtho2D即可：<br>&nbsp;&nbsp;&nbsp; gluOrtho2D(0.0,(double)Width,(double)Height,0.0);<br>&nbsp;&nbsp;&nbsp; 即，指定客户去左边界坐标为0，右边界坐标为客户区宽度，下边界坐标为客户区高度，上边界为0，这样，一个windows坐标体系就诞生了。在OpenGL中由于更惯用的是：<br>&nbsp;&nbsp;&nbsp; gluOrtho2D(0.0,(double)Width,0.0,(double)Height);<br>&nbsp;&nbsp;&nbsp; 体系，这样于真实笛卡尔坐标体系第一象限一致，也与OpenGL中默认的x，y轴方向一致。<br>&nbsp;&nbsp;&nbsp; <br>十、描述点、直线和多边形<br>&nbsp;&nbsp;&nbsp; 用户可以把顶点指定为二维的形式(也就是只有x和y坐标)，并由OpenGL为它赋一个值为零的z坐标。<br>&nbsp;&nbsp;&nbsp; OpenGL是根据三维投影几何的齐次坐标进行操作的。因此，对于内部的计算，所有的顶点都是用4个浮点坐标值(x,y,z,w)来表示的。如果w不等于0，那么这些坐标值就对应于欧几里德三维点(x/w,y/w,z/w)。可以用OpenGL函数指定w坐标，如果未指定w坐标，它就默认为1.0.<br>&nbsp;&nbsp;&nbsp; 矩形<br>&nbsp;&nbsp;&nbsp; void glRect{sifd}(TYPE x1,TYPE y1,TYPE x2,TYPE y2);<br>&nbsp;&nbsp;&nbsp; void glRect{sifd}v(TYPE *v1,TYPE *v2);<br>&nbsp;&nbsp;&nbsp; 绘制由角顶点(x1,y1)和(x2,y2)所定义的矩形。这个矩形位于z=0的平面上，并且它的边与x轴和y轴平行。<br>&nbsp;&nbsp;&nbsp; 指定顶点<br>&nbsp;&nbsp;&nbsp; void glVertex{234}{sifd}[v](TYPE coords);<br>&nbsp;&nbsp;&nbsp; 既可以为一个顶点提供多达4个的坐标(x,y,z,w)也可以只提供2个坐标(x,y)。如果使用的函数版本并没有显式指定z或w,z就会被当作0，w则默认为1.glVertext*()函数只有在位于glBegin()和glEnd()之间才有效。<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 几何绘图图元<br>&nbsp;&nbsp;&nbsp; void glBegin(GLenum mode);<br>&nbsp;&nbsp;&nbsp; 标志着一个顶点数据列表的开始，这个顶点描述了一个几何图元。mode参数指定了图元的类型，如下：<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 几何图元的名称和含义<br>&nbsp;&nbsp;&nbsp; 值&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 含义<br>&nbsp;&nbsp;&nbsp; GL_POINTS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 单个的点<br>&nbsp;&nbsp;&nbsp; GL_LINES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一对顶点被解释为一条直线段<br>&nbsp;&nbsp;&nbsp; GL_LINE_STRIP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一系列的连接直线段<br>&nbsp;&nbsp;&nbsp; GL_LINE_LOOP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 和上面相同，但第一个顶点和最后一个顶点彼此相连<br>&nbsp;&nbsp;&nbsp; GL_TRIANGLES&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 三个顶点被解释为一个三角形<br>&nbsp;&nbsp;&nbsp; GL_TRIANGLE_STRIP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 三角形的连接串<br>&nbsp;&nbsp;&nbsp; GL_TRIANGLE_FAN&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 连接成扇形的三角形系列<br>&nbsp;&nbsp;&nbsp; GL_QUADS&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 四个顶点被解释为一个四边形<br>&nbsp;&nbsp;&nbsp; GL_QUAD_STRIP&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 四边形的连接串<br>&nbsp;&nbsp;&nbsp; GL_POLYGON&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 一个简单的凸多边形的边界<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; void glEnd(void);<br>&nbsp;&nbsp;&nbsp; 标志一个顶点数据列表的结束。<br>&nbsp;&nbsp;&nbsp; <br>十一、基本状态管理<br>&nbsp;&nbsp;&nbsp; 为了打开或关闭某些状态，可以使用下面这两个简单的函数：<br>&nbsp;&nbsp;&nbsp; void glEnable(GLenum cap);<br>&nbsp;&nbsp;&nbsp; void glDisable(GLenum cap);<br>&nbsp;&nbsp;&nbsp; 还可以查询一个状态当前是否处于打开还是关闭状态：<br>&nbsp;&nbsp;&nbsp; GLboolean glIsEnable(GLenum capability)<br>&nbsp;&nbsp;&nbsp; 根据被查询的状态当前处于启用还是禁用状态，返回GL_TRUE或GL_FALSE。<br>&nbsp;&nbsp;&nbsp; 可以使用5个查询函数，查询许多状态的当前值：<br>&nbsp;&nbsp;&nbsp; void glGetBooleanv(GLenum pname,GLboolean *params);<br>&nbsp;&nbsp;&nbsp; void glGetIntegerv(GLenum pname,GLint *params);<br>&nbsp;&nbsp;&nbsp; void glGetFloatv(GLenum pname,GLfloat *params);<br>&nbsp;&nbsp;&nbsp; void glGetDoublev(GLenum pname,GLdouble *params);<br>&nbsp;&nbsp;&nbsp; void glGetPointerv(GLenum pname,GLvoid **params);<br>&nbsp;&nbsp;&nbsp; params参数是个符号变量，表示需要返回的状态变量。params是一个指定类型的数组指针，指向包含返回数据的位置。<br>&nbsp;&nbsp;&nbsp; <br>十一、显示点、直线和多边形<br>&nbsp;&nbsp;&nbsp; 为了控制被渲染的点的大小，可以使用glPointSize()函数，并在参数中提供一个值，表示希望的点的大小(以像素为参数)。<br>&nbsp;&nbsp;&nbsp; void glPointSize(GLfloat size);<br>&nbsp;&nbsp;&nbsp; 设置被渲染点的宽度，以像素为单位。size必须大于0.0，在默认情况下为1.0。<br>&nbsp;&nbsp;&nbsp; 如果抗锯齿功能被禁用(默认情况)，带小数的宽度值被四舍五入为整型值，在屏幕上绘制的是对齐的正方形像素区域。因此，如果宽度值为1.0，这个方块就是1个像素乘以1个像素，如果宽度为2.0，这个方块就是2个像素乘以2个像素。<br>&nbsp;&nbsp;&nbsp; 如果启用了矿局吃或多重采样，屏幕上绘制的将是一个圆形的像素区域，位于边界的像素在一般情况下使用的颜色强度较小，使边缘具有更平滑的外观。在这种情况下宽度值并不会被四舍五入。<br>&nbsp;&nbsp;&nbsp; 大多数OpenGL实现都支持非常大的点。可以使用glGetFloatv()函数(以GL_ALIASED_POINT_RANGE为参数)查询在未进行抗锯齿处理的情况下最小和最大的点。类似地，可以在这个函数中使用GL_SMOOTH_POINT_SIZE_RANGE为参数查询在进行了抗锯齿处理的情况下最小和最大的点。以GL_SMOOTH_POINT_SIZE_GRANULARITY为参数调用glGetFloatv()函数将返回系统对特定的抗锯齿点在大小方面的精度。例如，如果调用glPointSize(2.37)，并且返回的粒度值为0.1，那么这个点的将四舍五入为2.4.<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 直线的宽度<br>&nbsp;&nbsp;&nbsp; void glLineWidth(GLfloat width);<br>&nbsp;&nbsp;&nbsp; 以像素为单位设置宽度，用于直线的渲染，width参数必须大于0.0，在默认情况下为0.0.<br>&nbsp;&nbsp;&nbsp; 如果为使用抗锯齿功能，那么宽度为1、2和3的直线将分别画成1、2和3个像素的宽度。如果启用了抗锯齿功能，它就允许使用非整数的宽度，位于边界处的像素一般会画得淡一点。可以使用GL_ALIASED_LINE_WIDTH_RANGE为参数查询受系统所支持的直线宽度的方位。为了查询系统所支持的抗锯齿直线的最小和最大宽度，以及使用的OpenGL实现所支持的直线宽度粒度，可以分别用GL_SMOOTH_LINE_WIDTH_RANGE和GL_SMOOTH_LINE_WIDTH_GRANULARITY为参数调用glGetFloatv()函数。<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 点画线<br>&nbsp;&nbsp;&nbsp; 可以使用glLineStipple()函数定义点画模式，然后glEnable()函数启用直线点画功能。<br>&nbsp;&nbsp;&nbsp; glLineStipple(1,0x3F07);<br>&nbsp;&nbsp;&nbsp; glEnable(GL_LINE_STIPPLE);<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; void glLineStipple(GLint factor,GLushort pattern);<br>&nbsp;&nbsp;&nbsp; 设置直线的当前点画模式。pattern参数是个由1和0组成的16位序列。从这个模式的低位开始，一个像素一个像素进行处理。如果模式中对应的位为1，就绘制这个像素，否则就不绘制。模式可以使用factor参数进行扩展，它与连续的1和0的子序列相承。因此，如果模式中出现了连续3个1，如果factor是2，那么它们就扩展为6个连续的1.必须以GL_LINE_STIPPLE为参数调用glEnable()才能启用直线点画功能。可以向glDisable()函数传递同一个参数，禁用直线点画功能。<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 多边形的细节<br>&nbsp;&nbsp;&nbsp; 1.点、轮廓或实心形式的多边形<br>&nbsp;&nbsp;&nbsp; 多边形具有两个面：正面和背面。取决于哪一面将面对观察着，它们可能会被渲染成不同的样子。<br>&nbsp;&nbsp;&nbsp; void glPolygonMode(GLenum face,GLenum mode);<br>&nbsp;&nbsp;&nbsp; 控制一个多边形的正面和背面的绘图模式。face参数可以是GL_FRONT_AND_BACK、GL_FRONT或GL_BACK。mode参数可以是GL_POINT、GL_LINE或GL_FILL，表示多边形应该被画成点、轮廓还是填充形式。在默认情况下，多边形的正面和背面都被画成填充模式。<br>&nbsp;&nbsp;&nbsp; 例如，可以通过下面这两个函数调用，把正面画成填充形式，把背面画成轮廓模式：<br>&nbsp;&nbsp;&nbsp; glPolygonMode(GL_FRONT,GL_FILL);<br>&nbsp;&nbsp;&nbsp; glPolygonMode(GL_BACK,GL_LINE);<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 2、反转和剔除多边形表面<br>&nbsp;&nbsp;&nbsp; void glFrontFace(GLenum mode);<br>&nbsp;&nbsp;&nbsp; 控制多边形的正面是如何决定的。在默认情况下，mode是GL_CCW，它对应于窗口坐标上一个投影多边形的有序顶点的逆时针方向。如果mode是GL_CW，顶点顺序为顺时针方向的表面被认定是正面。<br><img src ="http://www.cppblog.com/xingjiegaojue/aggbug/111544.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xingjiegaojue/" target="_blank">张纶</a> 2010-04-03 23:44 <a href="http://www.cppblog.com/xingjiegaojue/archive/2010/04/03/111544.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>摘要</title><link>http://www.cppblog.com/xingjiegaojue/archive/2009/08/27/94611.html</link><dc:creator>张纶</dc:creator><author>张纶</author><pubDate>Thu, 27 Aug 2009 15:27:00 GMT</pubDate><guid>http://www.cppblog.com/xingjiegaojue/archive/2009/08/27/94611.html</guid><wfw:comment>http://www.cppblog.com/xingjiegaojue/comments/94611.html</wfw:comment><comments>http://www.cppblog.com/xingjiegaojue/archive/2009/08/27/94611.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xingjiegaojue/comments/commentRss/94611.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xingjiegaojue/services/trackbacks/94611.html</trackback:ping><description><![CDATA[①<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img id=Codehighlighter1_17_61_Open_Image onclick="this.style.display='none'; Codehighlighter1_17_61_Open_Text.style.display='none'; Codehighlighter1_17_61_Closed_Image.style.display='inline'; Codehighlighter1_17_61_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_17_61_Closed_Image onclick="this.style.display='none'; Codehighlighter1_17_61_Closed_Text.style.display='none'; Codehighlighter1_17_61_Open_Image.style.display='inline'; Codehighlighter1_17_61_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;f1()&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_17_61_Closed_Text></span><span id=Codehighlighter1_17_61_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;p&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;&#8220;hello&#8221;;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;p;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">&nbsp;<br><img id=Codehighlighter1_81_124_Open_Image onclick="this.style.display='none'; Codehighlighter1_81_124_Open_Text.style.display='none'; Codehighlighter1_81_124_Closed_Image.style.display='inline'; Codehighlighter1_81_124_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_81_124_Closed_Image onclick="this.style.display='none'; Codehighlighter1_81_124_Closed_Text.style.display='none'; Codehighlighter1_81_124_Open_Image.style.display='inline'; Codehighlighter1_81_124_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;f2()&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_81_124_Closed_Text></span><span id=Codehighlighter1_81_124_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;p[]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;&#8220;hello&#8221;;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;p;&nbsp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span></div>
char* p = &#8220;hello&#8221;; 相当于const char* p = &#8220;hello&#8221;; <br>p是全局的，所以可以正常返回。 <br><br>char p[] = &#8220;hello&#8221;; 这里p[]是局部变量，函数返回之前内存被自动回收，所以这个返回局部变量是错误的。返回值不确定。 <br>(待续)
<img src ="http://www.cppblog.com/xingjiegaojue/aggbug/94611.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xingjiegaojue/" target="_blank">张纶</a> 2009-08-27 23:27 <a href="http://www.cppblog.com/xingjiegaojue/archive/2009/08/27/94611.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>模板</title><link>http://www.cppblog.com/xingjiegaojue/archive/2009/08/23/94147.html</link><dc:creator>张纶</dc:creator><author>张纶</author><pubDate>Sun, 23 Aug 2009 02:23:00 GMT</pubDate><guid>http://www.cppblog.com/xingjiegaojue/archive/2009/08/23/94147.html</guid><wfw:comment>http://www.cppblog.com/xingjiegaojue/comments/94147.html</wfw:comment><comments>http://www.cppblog.com/xingjiegaojue/archive/2009/08/23/94147.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xingjiegaojue/comments/commentRss/94147.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xingjiegaojue/services/trackbacks/94147.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ◆类模板的使用读程序：#include&lt;iostream&gt;#include&lt;process.h&gt;using&nbsp;namespace&nbsp;std;template&lt;class&nbsp;T&gt;class&nbsp;valueAcess{&nbsp;&nbsp;&nbsp;&nbsp;T&nbsp;value;&nbsp;&nbsp;&nbsp;&nb...&nbsp;&nbsp;<a href='http://www.cppblog.com/xingjiegaojue/archive/2009/08/23/94147.html'>阅读全文</a><img src ="http://www.cppblog.com/xingjiegaojue/aggbug/94147.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xingjiegaojue/" target="_blank">张纶</a> 2009-08-23 10:23 <a href="http://www.cppblog.com/xingjiegaojue/archive/2009/08/23/94147.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>重载全局运算符new与delete</title><link>http://www.cppblog.com/xingjiegaojue/archive/2009/08/22/94105.html</link><dc:creator>张纶</dc:creator><author>张纶</author><pubDate>Sat, 22 Aug 2009 10:22:00 GMT</pubDate><guid>http://www.cppblog.com/xingjiegaojue/archive/2009/08/22/94105.html</guid><wfw:comment>http://www.cppblog.com/xingjiegaojue/comments/94105.html</wfw:comment><comments>http://www.cppblog.com/xingjiegaojue/archive/2009/08/22/94105.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xingjiegaojue/comments/commentRss/94105.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xingjiegaojue/services/trackbacks/94105.html</trackback:ping><description><![CDATA[一、<br>读程序：<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">malloc.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">(unsigned&nbsp;bytes)<br><img id=Codehighlighter1_72_183_Open_Image onclick="this.style.display='none'; Codehighlighter1_72_183_Open_Text.style.display='none'; Codehighlighter1_72_183_Closed_Image.style.display='inline'; Codehighlighter1_72_183_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_72_183_Closed_Image onclick="this.style.display='none'; Codehighlighter1_72_183_Closed_Text.style.display='none'; Codehighlighter1_72_183_Open_Image.style.display='inline'; Codehighlighter1_72_183_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_72_183_Closed_Text></span><span id=Codehighlighter1_72_183_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">SELF-GLOBAL-operator&nbsp;new!bytes=%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,bytes);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pvTemp</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">malloc(bytes);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;pvTemp;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;delete(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pvMem)<br><img id=Codehighlighter1_219_284_Open_Image onclick="this.style.display='none'; Codehighlighter1_219_284_Open_Text.style.display='none'; Codehighlighter1_219_284_Closed_Image.style.display='inline'; Codehighlighter1_219_284_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_219_284_Closed_Image onclick="this.style.display='none'; Codehighlighter1_219_284_Closed_Text.style.display='none'; Codehighlighter1_219_284_Open_Image.style.display='inline'; Codehighlighter1_219_284_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_219_284_Closed_Text></span><span id=Codehighlighter1_219_284_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">SELF-GLOBAL-operator&nbsp;delete\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;free(pvMem);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;claA<br><img id=Codehighlighter1_297_447_Open_Image onclick="this.style.display='none'; Codehighlighter1_297_447_Open_Text.style.display='none'; Codehighlighter1_297_447_Closed_Image.style.display='inline'; Codehighlighter1_297_447_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_297_447_Closed_Image onclick="this.style.display='none'; Codehighlighter1_297_447_Closed_Text.style.display='none'; Codehighlighter1_297_447_Open_Image.style.display='inline'; Codehighlighter1_297_447_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_297_447_Closed_Text></span><span id=Codehighlighter1_297_447_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;dat[</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;claA()<br><img id=Codehighlighter1_342_384_Open_Image onclick="this.style.display='none'; Codehighlighter1_342_384_Open_Text.style.display='none'; Codehighlighter1_342_384_Closed_Image.style.display='inline'; Codehighlighter1_342_384_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_342_384_Closed_Image onclick="this.style.display='none'; Codehighlighter1_342_384_Closed_Text.style.display='none'; Codehighlighter1_342_384_Open_Image.style.display='inline'; Codehighlighter1_342_384_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_342_384_Closed_Text></span><span id=Codehighlighter1_342_384_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">claA::claA()!\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">claA()<br><img id=Codehighlighter1_402_445_Open_Image onclick="this.style.display='none'; Codehighlighter1_402_445_Open_Text.style.display='none'; Codehighlighter1_402_445_Closed_Image.style.display='inline'; Codehighlighter1_402_445_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_402_445_Closed_Image onclick="this.style.display='none'; Codehighlighter1_402_445_Closed_Text.style.display='none'; Codehighlighter1_402_445_Open_Image.style.display='inline'; Codehighlighter1_402_445_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_402_445_Closed_Text></span><span id=Codehighlighter1_402_445_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">claA::~claA()!\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_461_617_Open_Image onclick="this.style.display='none'; Codehighlighter1_461_617_Open_Text.style.display='none'; Codehighlighter1_461_617_Closed_Image.style.display='inline'; Codehighlighter1_461_617_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_461_617_Closed_Image onclick="this.style.display='none'; Codehighlighter1_461_617_Closed_Text.style.display='none'; Codehighlighter1_461_617_Open_Image.style.display='inline'; Codehighlighter1_461_617_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_461_617_Closed_Text></span><span id=Codehighlighter1_461_617_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pi</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">123</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;pi;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;claA&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pmyCla</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;claA;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;pmyCla;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;claA</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pmyClaA</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;claA[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;[]pmyClaA;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span></div>
<br>输出结果为：<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">SELF</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">GLOBAL</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">bytes</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">SELF</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">GLOBAL</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;delete<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">SELF</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">GLOBAL</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">bytes</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">20</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">claA::claA()</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">claA::</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">claA()</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">SELF</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">GLOBAL</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;delete<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">SELF</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">GLOBAL</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">bytes</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">44</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">claA::claA()</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">claA::claA()</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">claA::</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">claA()</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">claA::</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">claA()</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">SELF</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">GLOBAL</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;delete</span></div>
<br>二、<br>读程序：<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">process.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;MAX_SIZE&nbsp;10000</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;MemArea[MAX_SIZE];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pm</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">MemArea;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">(unsigned&nbsp;bytes)<br><img id=Codehighlighter1_172_510_Open_Image onclick="this.style.display='none'; Codehighlighter1_172_510_Open_Text.style.display='none'; Codehighlighter1_172_510_Closed_Image.style.display='inline'; Codehighlighter1_172_510_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_172_510_Closed_Image onclick="this.style.display='none'; Codehighlighter1_172_510_Closed_Text.style.display='none'; Codehighlighter1_172_510_Open_Image.style.display='inline'; Codehighlighter1_172_510_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_172_510_Closed_Text></span><span id=Codehighlighter1_172_510_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">SELF-GLOBAL-operator&nbsp;new!bytes=%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,bytes);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(pm</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">bytes</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">MemArea</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">MAX_SIZE)<br><img id=Codehighlighter1_271_330_Open_Image onclick="this.style.display='none'; Codehighlighter1_271_330_Open_Text.style.display='none'; Codehighlighter1_271_330_Closed_Image.style.display='inline'; Codehighlighter1_271_330_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_271_330_Closed_Image onclick="this.style.display='none'; Codehighlighter1_271_330_Closed_Text.style.display='none'; Codehighlighter1_271_330_Open_Image.style.display='inline'; Codehighlighter1_271_330_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_271_330_Closed_Text></span><span id=Codehighlighter1_271_330_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pm</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">bytes;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)(pm</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">bytes);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_345_508_Open_Image onclick="this.style.display='none'; Codehighlighter1_345_508_Open_Text.style.display='none'; Codehighlighter1_345_508_Closed_Image.style.display='inline'; Codehighlighter1_345_508_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_345_508_Closed_Image onclick="this.style.display='none'; Codehighlighter1_345_508_Closed_Text.style.display='none'; Codehighlighter1_345_508_Open_Image.style.display='inline'; Codehighlighter1_345_508_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_345_508_Closed_Text></span><span id=Codehighlighter1_345_508_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">My-new-fail!I&nbsp;only&nbsp;have&nbsp;%d&nbsp;bytes&nbsp;memory&nbsp;now!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,MemArea</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">MAX_SIZE</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">pm);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;but&nbsp;you&nbsp;need&nbsp;%d&nbsp;bytes~\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,bytes);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;NULL;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;delete(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pvMem)<br><img id=Codehighlighter1_546_677_Open_Image onclick="this.style.display='none'; Codehighlighter1_546_677_Open_Text.style.display='none'; Codehighlighter1_546_677_Closed_Image.style.display='inline'; Codehighlighter1_546_677_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_546_677_Closed_Image onclick="this.style.display='none'; Codehighlighter1_546_677_Closed_Text.style.display='none'; Codehighlighter1_546_677_Open_Image.style.display='inline'; Codehighlighter1_546_677_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_546_677_Closed_Text></span><span id=Codehighlighter1_546_677_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">SELF-GLOBAL-operator&nbsp;delete!\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)pvMem</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">MemArea</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)pvMem</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">MemArea</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">MAX_SIZE)<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;pm</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)pvMem;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_690_1115_Open_Image onclick="this.style.display='none'; Codehighlighter1_690_1115_Open_Text.style.display='none'; Codehighlighter1_690_1115_Closed_Image.style.display='inline'; Codehighlighter1_690_1115_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_690_1115_Closed_Image onclick="this.style.display='none'; Codehighlighter1_690_1115_Closed_Text.style.display='none'; Codehighlighter1_690_1115_Open_Image.style.display='inline'; Codehighlighter1_690_1115_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_690_1115_Closed_Text></span><span id=Codehighlighter1_690_1115_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pc</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">[MAX_SIZE];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;strcpy(pc,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">1234567abcdefg</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">pc=&gt;%s\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,pc);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;pc;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pd</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">862.13</span><span style="COLOR: #000000">);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">));<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">(*pd)=%f\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pd);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pdA1</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">[</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;delete[]pdA1;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pdA2</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">[</span><span style="COLOR: #000000">1250</span><span style="COLOR: #000000">];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">pdA2)<br><img id=Codehighlighter1_1041_1066_Open_Image onclick="this.style.display='none'; Codehighlighter1_1041_1066_Open_Text.style.display='none'; Codehighlighter1_1041_1066_Closed_Image.style.display='inline'; Codehighlighter1_1041_1066_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1041_1066_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1041_1066_Closed_Text.style.display='none'; Codehighlighter1_1041_1066_Open_Image.style.display='inline'; Codehighlighter1_1041_1066_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1041_1066_Closed_Text></span><span id=Codehighlighter1_1041_1066_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;pd;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;delete[]pdA2;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;pd;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span></div>
输出结果为：<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">SELF</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">GLOBAL</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">bytes</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">10000</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">pc</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">1234567abcdefg<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">SELF</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">GLOBAL</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;delete</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">SELF</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">GLOBAL</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">bytes</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000">8</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pd)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">862.130000</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">SELF</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">GLOBAL</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">bytes</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">80</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">SELF</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">GLOBAL</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;delete</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">SELF</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">GLOBAL</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">bytes</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">10000</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">My</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">fail</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">I&nbsp;only&nbsp;have&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">d&nbsp;bytes&nbsp;memory&nbsp;now</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&nbsp;but&nbsp;you&nbsp;need&nbsp;</span><span style="COLOR: #000000">9992</span><span style="COLOR: #000000">&nbsp;bytes</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">SELF</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">GLOBAL</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;delete</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">SELF</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">GLOBAL</span><span style="COLOR: #000000">-</span><span style="COLOR: #0000ff">operator</span><span style="COLOR: #000000">&nbsp;delete</span><span style="COLOR: #000000">!</span></div>
<img src ="http://www.cppblog.com/xingjiegaojue/aggbug/94105.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xingjiegaojue/" target="_blank">张纶</a> 2009-08-22 18:22 <a href="http://www.cppblog.com/xingjiegaojue/archive/2009/08/22/94105.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>虚函数的使用</title><link>http://www.cppblog.com/xingjiegaojue/archive/2009/08/21/94047.html</link><dc:creator>张纶</dc:creator><author>张纶</author><pubDate>Fri, 21 Aug 2009 11:26:00 GMT</pubDate><guid>http://www.cppblog.com/xingjiegaojue/archive/2009/08/21/94047.html</guid><wfw:comment>http://www.cppblog.com/xingjiegaojue/comments/94047.html</wfw:comment><comments>http://www.cppblog.com/xingjiegaojue/archive/2009/08/21/94047.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xingjiegaojue/comments/commentRss/94047.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xingjiegaojue/services/trackbacks/94047.html</trackback:ping><description><![CDATA[读下列程序：<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;B0<br><img id=Codehighlighter1_50_136_Open_Image onclick="this.style.display='none'; Codehighlighter1_50_136_Open_Text.style.display='none'; Codehighlighter1_50_136_Closed_Image.style.display='inline'; Codehighlighter1_50_136_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_50_136_Closed_Image onclick="this.style.display='none'; Codehighlighter1_50_136_Closed_Text.style.display='none'; Codehighlighter1_50_136_Open_Image.style.display='inline'; Codehighlighter1_50_136_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_50_136_Closed_Text></span><span id=Codehighlighter1_50_136_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;print()<br><img id=Codehighlighter1_93_134_Open_Image onclick="this.style.display='none'; Codehighlighter1_93_134_Open_Text.style.display='none'; Codehighlighter1_93_134_Closed_Image.style.display='inline'; Codehighlighter1_93_134_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_93_134_Closed_Image onclick="this.style.display='none'; Codehighlighter1_93_134_Closed_Text.style.display='none'; Codehighlighter1_93_134_Open_Image.style.display='inline'; Codehighlighter1_93_134_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_93_134_Closed_Text></span><span id=Codehighlighter1_93_134_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">B0::print()</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;B11:</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;B0<br><img id=Codehighlighter1_159_246_Open_Image onclick="this.style.display='none'; Codehighlighter1_159_246_Open_Text.style.display='none'; Codehighlighter1_159_246_Closed_Image.style.display='inline'; Codehighlighter1_159_246_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_159_246_Closed_Image onclick="this.style.display='none'; Codehighlighter1_159_246_Closed_Text.style.display='none'; Codehighlighter1_159_246_Open_Image.style.display='inline'; Codehighlighter1_159_246_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_159_246_Closed_Text></span><span id=Codehighlighter1_159_246_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;print()<br><img id=Codehighlighter1_202_244_Open_Image onclick="this.style.display='none'; Codehighlighter1_202_244_Open_Text.style.display='none'; Codehighlighter1_202_244_Closed_Image.style.display='inline'; Codehighlighter1_202_244_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_202_244_Closed_Image onclick="this.style.display='none'; Codehighlighter1_202_244_Closed_Text.style.display='none'; Codehighlighter1_202_244_Open_Image.style.display='inline'; Codehighlighter1_202_244_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_202_244_Closed_Text></span><span id=Codehighlighter1_202_244_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">B11::print()</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;B12:</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;B0<br><img id=Codehighlighter1_269_356_Open_Image onclick="this.style.display='none'; Codehighlighter1_269_356_Open_Text.style.display='none'; Codehighlighter1_269_356_Closed_Image.style.display='inline'; Codehighlighter1_269_356_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_269_356_Closed_Image onclick="this.style.display='none'; Codehighlighter1_269_356_Closed_Text.style.display='none'; Codehighlighter1_269_356_Open_Image.style.display='inline'; Codehighlighter1_269_356_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_269_356_Closed_Text></span><span id=Codehighlighter1_269_356_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;print()<br><img id=Codehighlighter1_312_354_Open_Image onclick="this.style.display='none'; Codehighlighter1_312_354_Open_Text.style.display='none'; Codehighlighter1_312_354_Closed_Image.style.display='inline'; Codehighlighter1_312_354_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_312_354_Closed_Image onclick="this.style.display='none'; Codehighlighter1_312_354_Closed_Text.style.display='none'; Codehighlighter1_312_354_Open_Image.style.display='inline'; Codehighlighter1_312_354_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_312_354_Closed_Text></span><span id=Codehighlighter1_312_354_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">B12::print()</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;B2:</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">&nbsp;B0<br><img id=Codehighlighter1_378_464_Open_Image onclick="this.style.display='none'; Codehighlighter1_378_464_Open_Text.style.display='none'; Codehighlighter1_378_464_Closed_Image.style.display='inline'; Codehighlighter1_378_464_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_378_464_Closed_Image onclick="this.style.display='none'; Codehighlighter1_378_464_Closed_Text.style.display='none'; Codehighlighter1_378_464_Open_Image.style.display='inline'; Codehighlighter1_378_464_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_378_464_Closed_Text></span><span id=Codehighlighter1_378_464_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">virtual</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;print()<br><img id=Codehighlighter1_421_462_Open_Image onclick="this.style.display='none'; Codehighlighter1_421_462_Open_Text.style.display='none'; Codehighlighter1_421_462_Closed_Image.style.display='inline'; Codehighlighter1_421_462_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_421_462_Closed_Image onclick="this.style.display='none'; Codehighlighter1_421_462_Closed_Text.style.display='none'; Codehighlighter1_421_462_Open_Image.style.display='inline'; Codehighlighter1_421_462_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_421_462_Closed_Text></span><span id=Codehighlighter1_421_462_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">B2::print()</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_478_1012_Open_Image onclick="this.style.display='none'; Codehighlighter1_478_1012_Open_Text.style.display='none'; Codehighlighter1_478_1012_Closed_Image.style.display='inline'; Codehighlighter1_478_1012_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_478_1012_Closed_Image onclick="this.style.display='none'; Codehighlighter1_478_1012_Closed_Text.style.display='none'; Codehighlighter1_478_1012_Open_Image.style.display='inline'; Codehighlighter1_478_1012_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_478_1012_Closed_Text></span><span id=Codehighlighter1_478_1012_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;B0&nbsp;b0,</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;B11&nbsp;b11;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;B12&nbsp;b12;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;B2&nbsp;b2;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Input&nbsp;i(0,11,12,2,else&nbsp;ending!):</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">i;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">12</span><span style="COLOR: #000000">||</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_640_996_Open_Image onclick="this.style.display='none'; Codehighlighter1_640_996_Open_Text.style.display='none'; Codehighlighter1_640_996_Closed_Image.style.display='inline'; Codehighlighter1_640_996_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_640_996_Closed_Image onclick="this.style.display='none'; Codehighlighter1_640_996_Closed_Text.style.display='none'; Codehighlighter1_640_996_Open_Image.style.display='inline'; Codehighlighter1_640_996_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_640_996_Closed_Text></span><span id=Codehighlighter1_640_996_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">switch</span><span style="COLOR: #000000">(i)<br><img id=Codehighlighter1_668_904_Open_Image onclick="this.style.display='none'; Codehighlighter1_668_904_Open_Text.style.display='none'; Codehighlighter1_668_904_Closed_Image.style.display='inline'; Codehighlighter1_668_904_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_668_904_Closed_Image onclick="this.style.display='none'; Codehighlighter1_668_904_Closed_Text.style.display='none'; Codehighlighter1_668_904_Open_Image.style.display='inline'; Codehighlighter1_668_904_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_668_904_Closed_Text></span><span id=Codehighlighter1_668_904_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">:&nbsp;&nbsp;p</span><span style="COLOR: #000000">=&amp;</span><span style="COLOR: #000000">b0;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">:&nbsp;p</span><span style="COLOR: #000000">=&amp;</span><span style="COLOR: #000000">b11;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">12</span><span style="COLOR: #000000">:&nbsp;p</span><span style="COLOR: #000000">=&amp;</span><span style="COLOR: #000000">b12;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">:&nbsp;&nbsp;p</span><span style="COLOR: #000000">=&amp;</span><span style="COLOR: #000000">b2;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">print();<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Input&nbsp;i(0,11,12,2&nbsp;else&nbsp;ending!):</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">i;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span></div>
结果显示：<br>Input i(0,11,12,2,else ending!): 2<br>B2::print()<br>Input i(0,11,12,2,else ending!):11<br>B11::print()<br>Input i(0,11,12,2,else ending!):12<br>B12::print()<br>Input i(0,11,12,2,else ending!):<br>B0::print()<br>Input i(0,11,12,2,else ending!):3<br>press anykey to continue<br><br>解析：<br>动态联编是与虚函数以及程序中使用指向基类的指针(变量)密切相关的。注意，C++规定，基类指针可以指向其派生类的对象<br>(即可将派生类对象的地址赋给其基类指针变量)，但反过来不可以。允许基类指针指向其派生类对象--这一点正是函数超载及<br>虚函数用法的基础。本范例程序中，说明了一个纸箱基类的指针p，而后通过"p= 某派生类的类对象地址；"使p指向了不同的<br>派生类，再接着使用"p-&gt;print()；"去对虚函数print()进行调用，系统将视基类指针p所指对象的不同而调用不同类的print。<br>
<img src ="http://www.cppblog.com/xingjiegaojue/aggbug/94047.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xingjiegaojue/" target="_blank">张纶</a> 2009-08-21 19:26 <a href="http://www.cppblog.com/xingjiegaojue/archive/2009/08/21/94047.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>指向一维数组的指针，引用的建立</title><link>http://www.cppblog.com/xingjiegaojue/archive/2009/08/18/93664.html</link><dc:creator>张纶</dc:creator><author>张纶</author><pubDate>Mon, 17 Aug 2009 16:46:00 GMT</pubDate><guid>http://www.cppblog.com/xingjiegaojue/archive/2009/08/18/93664.html</guid><wfw:comment>http://www.cppblog.com/xingjiegaojue/comments/93664.html</wfw:comment><comments>http://www.cppblog.com/xingjiegaojue/archive/2009/08/18/93664.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xingjiegaojue/comments/commentRss/93664.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xingjiegaojue/services/trackbacks/93664.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 14pt">一、<br></span>读程序：<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #008080">&nbsp;1</span><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img id=Codehighlighter1_51_922_Open_Image onclick="this.style.display='none'; Codehighlighter1_51_922_Open_Text.style.display='none'; Codehighlighter1_51_922_Closed_Image.style.display='inline'; Codehighlighter1_51_922_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_51_922_Closed_Image onclick="this.style.display='none'; Codehighlighter1_51_922_Closed_Text.style.display='none'; Codehighlighter1_51_922_Open_Image.style.display='inline'; Codehighlighter1_51_922_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_51_922_Closed_Text></span><span id=Codehighlighter1_51_922_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img id=Codehighlighter1_69_87_Open_Image onclick="this.style.display='none'; Codehighlighter1_69_87_Open_Text.style.display='none'; Codehighlighter1_69_87_Closed_Image.style.display='inline'; Codehighlighter1_69_87_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_69_87_Closed_Image onclick="this.style.display='none'; Codehighlighter1_69_87_Closed_Text.style.display='none'; Codehighlighter1_69_87_Open_Image.style.display='inline'; Codehighlighter1_69_87_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;a[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_69_87_Closed_Text></span><span id=Codehighlighter1_69_87_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p)[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">],i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">int&nbsp;a[3][3]=(1,2,3,4,5,6,7,8,9};</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">int&nbsp;(*p)[3],i=2,j=0;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">-------------------------</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">a[i][j]=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">a[i][j]</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">*(a[i]+j)=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;*</span><span style="COLOR: #000000">(a[i]</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">j)</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">*(*(a+i)+j)=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;*</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(a</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">i)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">j)</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;p</span><span style="COLOR: #000000">=&amp;</span><span style="COLOR: #000000">a[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">--After&nbsp;'p=&amp;a[i];'--</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">(*p)[0]=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p)[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">(*(p+0))[0]=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">))[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">p[0][0]=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">p[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">(*p)[1]=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p)[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">(*p+1)[0]=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">(*(p+1))[0]=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">))[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">p[1][0]=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">p[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;p</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">--After&nbsp;'p++;'--</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">(*p)[2]=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p)[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">p[0][2]=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">p[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">*(p[0]+2)=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;*</span><span style="COLOR: #000000">(p[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">*(*p+2)=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;*</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span></div>
运行结果：<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;a[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">};<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p)[</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">],i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">,j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000">-------------------------</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">a[i][j]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(a[i]</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">j)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(a</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">i)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">j)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">After&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">p=&amp;a[i];</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p)[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">))[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">p[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p)[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">))[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">p[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">After&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">p++;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p)[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">p[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">][</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(p[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">9</span></div>
<br>二、<br>引用的建立及简单使用<br>读程序：<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #008080">&nbsp;1</span><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img id=Codehighlighter1_51_386_Open_Image onclick="this.style.display='none'; Codehighlighter1_51_386_Open_Text.style.display='none'; Codehighlighter1_51_386_Closed_Image.style.display='inline'; Codehighlighter1_51_386_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_51_386_Closed_Image onclick="this.style.display='none'; Codehighlighter1_51_386_Closed_Text.style.display='none'; Codehighlighter1_51_386_Open_Image.style.display='inline'; Codehighlighter1_51_386_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_51_386_Closed_Text></span><span id=Codehighlighter1_51_386_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i;<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">ri</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">i;<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pi</span><span style="COLOR: #000000">=&amp;</span><span style="COLOR: #000000">i;<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&amp;i=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;&amp;</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&amp;ri=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;&amp;</span><span style="COLOR: #000000">ri</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&amp;pi=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;&amp;</span><span style="COLOR: #000000">pi</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1011</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">i=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,*pi=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;*</span><span style="COLOR: #000000">pi</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,ri=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">ri</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pi</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2022</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">i=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,*pi=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;*</span><span style="COLOR: #000000">pi</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,ri=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">ri</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;ri</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">3033</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">i=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,*pi=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;*</span><span style="COLOR: #000000">pi</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,ri=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">ri</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span></div>
运行结果：<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0x22ff74</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">ri</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0x22ff74</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">pi</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0x22ff6c</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1011</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pi</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1011</span><span style="COLOR: #000000">,ri</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1011</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2022</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pi</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2022</span><span style="COLOR: #000000">,ri</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2022</span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">3033</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pi</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">3033</span><span style="COLOR: #000000">,ri</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">3033</span></div>
<img src ="http://www.cppblog.com/xingjiegaojue/aggbug/93664.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xingjiegaojue/" target="_blank">张纶</a> 2009-08-18 00:46 <a href="http://www.cppblog.com/xingjiegaojue/archive/2009/08/18/93664.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>矩阵的相关运算</title><link>http://www.cppblog.com/xingjiegaojue/archive/2009/08/17/93658.html</link><dc:creator>张纶</dc:creator><author>张纶</author><pubDate>Mon, 17 Aug 2009 14:49:00 GMT</pubDate><guid>http://www.cppblog.com/xingjiegaojue/archive/2009/08/17/93658.html</guid><wfw:comment>http://www.cppblog.com/xingjiegaojue/comments/93658.html</wfw:comment><comments>http://www.cppblog.com/xingjiegaojue/archive/2009/08/17/93658.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xingjiegaojue/comments/commentRss/93658.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xingjiegaojue/services/trackbacks/93658.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ①二矩阵相加说明三个行列数完全相同的二维数组用于表示矩阵：int A[m][n],B[m][n],C[m][n];给A、B二矩阵赋初值，而后计算C=A+B(矩阵加)。【解答程序】&nbsp;1#include&lt;iostream&gt;&nbsp;2using&nbsp;namespace&nbsp;std;&nbsp;3int&nbsp;main()&nbsp;4{&nbsp;5&nbs...&nbsp;&nbsp;<a href='http://www.cppblog.com/xingjiegaojue/archive/2009/08/17/93658.html'>阅读全文</a><img src ="http://www.cppblog.com/xingjiegaojue/aggbug/93658.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xingjiegaojue/" target="_blank">张纶</a> 2009-08-17 22:49 <a href="http://www.cppblog.com/xingjiegaojue/archive/2009/08/17/93658.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>全局变量、static存储类别变量、extern型外部变量</title><link>http://www.cppblog.com/xingjiegaojue/archive/2009/08/17/93538.html</link><dc:creator>张纶</dc:creator><author>张纶</author><pubDate>Sun, 16 Aug 2009 16:28:00 GMT</pubDate><guid>http://www.cppblog.com/xingjiegaojue/archive/2009/08/17/93538.html</guid><wfw:comment>http://www.cppblog.com/xingjiegaojue/comments/93538.html</wfw:comment><comments>http://www.cppblog.com/xingjiegaojue/archive/2009/08/17/93538.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xingjiegaojue/comments/commentRss/93538.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xingjiegaojue/services/trackbacks/93538.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 14pt">①</span><br><br>下述程序中使用了全局变量以及具有static存储类别的变量<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;func(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img id=Codehighlighter1_77_415_Open_Image onclick="this.style.display='none'; Codehighlighter1_77_415_Open_Text.style.display='none'; Codehighlighter1_77_415_Closed_Image.style.display='inline'; Codehighlighter1_77_415_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_77_415_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_77_415_Closed_Text.style.display='none'; Codehighlighter1_77_415_Open_Image.style.display='inline'; Codehighlighter1_77_415_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_77_415_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id=Codehighlighter1_77_415_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;a;<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;b</span><span style="COLOR: #000000">=-</span><span style="COLOR: #000000">22</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;c</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">-------main-------</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">i=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">a=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">b=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">b</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">c=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">c</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;c</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">c</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;func();<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">------main()------</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">i=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">a=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">b=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">b</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">c=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">c</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">12</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;func();<br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;func(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img id=Codehighlighter1_433_644_Open_Image onclick="this.style.display='none'; Codehighlighter1_433_644_Open_Text.style.display='none'; Codehighlighter1_433_644_Closed_Image.style.display='inline'; Codehighlighter1_433_644_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_433_644_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_433_644_Closed_Text.style.display='none'; Codehighlighter1_433_644_Open_Image.style.display='inline'; Codehighlighter1_433_644_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_433_644_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id=Codehighlighter1_433_644_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;a</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;b;<br></span><span style="COLOR: #008080">26</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;c</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;a</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">21</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;c</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">c</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">------func()------</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">i=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">a=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">b=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">b</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">c=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">c</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">33</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;b</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">a;<br></span><span style="COLOR: #008080">34</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">35</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
运行结果为：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">------</span><span style="COLOR: #000000">main()</span><span style="COLOR: #000000">------</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">,a</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,b</span><span style="COLOR: #000000">=-</span><span style="COLOR: #000000">22</span><span style="COLOR: #000000">,c</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">------</span><span style="COLOR: #000000">func()</span><span style="COLOR: #000000">------</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">26</span><span style="COLOR: #000000">,a</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">,b</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,c</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">16</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">------</span><span style="COLOR: #000000">main()</span><span style="COLOR: #000000">------</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">26</span><span style="COLOR: #000000">,a</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,b</span><span style="COLOR: #000000">=-</span><span style="COLOR: #000000">22</span><span style="COLOR: #000000">,c</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">------</span><span style="COLOR: #000000">func()</span><span style="COLOR: #000000">------</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">59</span><span style="COLOR: #000000">,a</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">,b</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">,c</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">16</span></div>
结果分析：<br>静态(static)局部变量与自动(auto)局部变量的使用区别：它们的作用域都是局部的，作用域外都是不可见的；但静态局部变量在<br>其作用域外仍是存在的(尚且"活着"，其存储单元中的值并不被破坏，仍可在下次进入作用域后接着用！即具有全局变量取值<br>"连续性"的特征)，而自动局部变量在其作用域外则不复存在(已经"死亡"，其存储单元已经被系统回收！当然不可接着使用该<br>变量的原有值，下次进入该作用域后重新分配存储空间)。另外注意:静态变量仅在首次"遇到"时分配存储空间并进行初始化<br>(若没显式提供初始化值时，系统自动将其初始化为系统隐含值，即将数值量初始化为0，将字符量初始化为空格)。 <br><br><span style="FONT-SIZE: 14pt">②<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">median.cpp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1111</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;ch</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;func1();<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;func2();<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img id=Codehighlighter1_126_266_Open_Image onclick="this.style.display='none'; Codehighlighter1_126_266_Open_Text.style.display='none'; Codehighlighter1_126_266_Closed_Image.style.display='inline'; Codehighlighter1_126_266_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_126_266_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_126_266_Closed_Text.style.display='none'; Codehighlighter1_126_266_Open_Image.style.display='inline'; Codehighlighter1_126_266_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_126_266_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id=Codehighlighter1_126_266_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;func1();<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">file1_main:i,ch=&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">ch</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;func2();<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">file2_main:i,ch=&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">ch</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;func1()<br></span><span style="COLOR: #008080">19</span><span style="COLOR: #000000"><img id=Codehighlighter1_282_358_Open_Image onclick="this.style.display='none'; Codehighlighter1_282_358_Open_Text.style.display='none'; Codehighlighter1_282_358_Closed_Image.style.display='inline'; Codehighlighter1_282_358_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_282_358_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_282_358_Closed_Text.style.display='none'; Codehighlighter1_282_358_Open_Image.style.display='inline'; Codehighlighter1_282_358_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_282_358_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id=Codehighlighter1_282_358_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">20</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">file1_func1:i,ch=&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">ch</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">21</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">2222</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">22</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ch</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">23</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">24</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br></span><span style="COLOR: #008080">25</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">extern型外部变量的使用"median.cpp"</span><span style="COLOR: #008000">//<br></span><span style="COLOR: #008080">26</span><span style="COLOR: #008000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">27</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br></span><span style="COLOR: #008080">28</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i;<br></span><span style="COLOR: #008080">29</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;ch;<br></span><span style="COLOR: #008080">30</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;func2()<br></span><span style="COLOR: #008080">31</span><span style="COLOR: #000000"><img id=Codehighlighter1_475_551_Open_Image onclick="this.style.display='none'; Codehighlighter1_475_551_Open_Text.style.display='none'; Codehighlighter1_475_551_Closed_Image.style.display='inline'; Codehighlighter1_475_551_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_475_551_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_475_551_Closed_Text.style.display='none'; Codehighlighter1_475_551_Open_Image.style.display='inline'; Codehighlighter1_475_551_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_475_551_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id=Codehighlighter1_475_551_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">32</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">file2_func2:i,ch=&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">ch</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">33</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">3333</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">34</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ch</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">35</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">36</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
</span>运行结果：<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">file1_func1:i,ch</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">1111</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>file1_main:i,ch</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">2222</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>file2_func2:i,ch</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">2222</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>file2_main:i,ch</span><span style="COLOR: #000000">=&gt;</span><span style="COLOR: #000000">3333</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">*</span></div>
分析：<br>外部变量的使用，可以使得在不同的源程序文件之间进行变量值的相互传递。<br>通过extern关键字来对外部变量进行说明，系统仅在其中某一个文件的外部变量定义处为其分配存储空间，而在<br>其他文件中则不再分配，但与定义处的那一同名变量共享同一存储空间，以达到多文件之间变量值相互传递的目的。
<img src ="http://www.cppblog.com/xingjiegaojue/aggbug/93538.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xingjiegaojue/" target="_blank">张纶</a> 2009-08-17 00:28 <a href="http://www.cppblog.com/xingjiegaojue/archive/2009/08/17/93538.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>方法论</title><link>http://www.cppblog.com/xingjiegaojue/archive/2009/08/16/93497.html</link><dc:creator>张纶</dc:creator><author>张纶</author><pubDate>Sun, 16 Aug 2009 08:09:00 GMT</pubDate><guid>http://www.cppblog.com/xingjiegaojue/archive/2009/08/16/93497.html</guid><wfw:comment>http://www.cppblog.com/xingjiegaojue/comments/93497.html</wfw:comment><comments>http://www.cppblog.com/xingjiegaojue/archive/2009/08/16/93497.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xingjiegaojue/comments/commentRss/93497.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xingjiegaojue/services/trackbacks/93497.html</trackback:ping><description><![CDATA[①<br><span style="FONT-SIZE: 10pt">将输入的十进制正整数转换为罗马数据。<br>假设罗马数据中只使用如下七个基值字母：M、D、C、L、X、V、I，分别用来表示1000、500、100、50、10、5、1。例如十进制数678对应的罗马数据为：DCLXXVIII，而十进制数1978对应的罗马数据为MDCCCCLXXVI。<br>程序如下：</span><br>
<div>&nbsp;1<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include&lt;iostream&gt;<br>&nbsp;2<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">using&nbsp;namespace&nbsp;std;<br>&nbsp;3<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">int&nbsp;main()<br>&nbsp;4<img id=Codehighlighter1_51_498_Open_Image onclick="this.style.display='none'; Codehighlighter1_51_498_Open_Text.style.display='none'; Codehighlighter1_51_498_Closed_Image.style.display='inline'; Codehighlighter1_51_498_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img id=Codehighlighter1_51_498_Closed_Image onclick="this.style.display='none'; Codehighlighter1_51_498_Closed_Text.style.display='none'; Codehighlighter1_51_498_Open_Image.style.display='inline'; Codehighlighter1_51_498_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif">{<br>&nbsp;5<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;value;<br>&nbsp;6<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;"Enter&nbsp;value:";<br>&nbsp;7<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cin&gt;&gt;value;<br>&nbsp;8<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;test_val=value;<br>&nbsp;9<img id=Codehighlighter1_150_164_Open_Image onclick="this.style.display='none'; Codehighlighter1_150_164_Open_Text.style.display='none'; Codehighlighter1_150_164_Closed_Image.style.display='inline'; Codehighlighter1_150_164_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img id=Codehighlighter1_150_164_Closed_Image onclick="this.style.display='none'; Codehighlighter1_150_164_Closed_Text.style.display='none'; Codehighlighter1_150_164_Open_Image.style.display='inline'; Codehighlighter1_150_164_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;count[]={0,0,0,0,0,0,0};<br>10<img id=Codehighlighter1_182_210_Open_Image onclick="this.style.display='none'; Codehighlighter1_182_210_Open_Text.style.display='none'; Codehighlighter1_182_210_Closed_Image.style.display='inline'; Codehighlighter1_182_210_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img id=Codehighlighter1_182_210_Closed_Image onclick="this.style.display='none'; Codehighlighter1_182_210_Closed_Text.style.display='none'; Codehighlighter1_182_210_Open_Image.style.display='inline'; Codehighlighter1_182_210_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;rom[]={'M','D','C','L','X','V','I'};<br>11<img id=Codehighlighter1_227_250_Open_Image onclick="this.style.display='none'; Codehighlighter1_227_250_Open_Text.style.display='none'; Codehighlighter1_227_250_Closed_Image.style.display='inline'; Codehighlighter1_227_250_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img id=Codehighlighter1_227_250_Closed_Image onclick="this.style.display='none'; Codehighlighter1_227_250_Closed_Text.style.display='none'; Codehighlighter1_227_250_Open_Image.style.display='inline'; Codehighlighter1_227_250_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;div[]={1000,500,100,50,10,5,1};<br>12<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i=0;i&lt;7;++i)<br>13<img id=Codehighlighter1_282_356_Open_Image onclick="this.style.display='none'; Codehighlighter1_282_356_Open_Text.style.display='none'; Codehighlighter1_282_356_Closed_Image.style.display='inline'; Codehighlighter1_282_356_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img id=Codehighlighter1_282_356_Closed_Image onclick="this.style.display='none'; Codehighlighter1_282_356_Closed_Text.style.display='none'; Codehighlighter1_282_356_Open_Image.style.display='inline'; Codehighlighter1_282_356_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;{<br>14<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;count[i]=test_val/div[i];<br>15<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;test_val=test_val%div[i];<br>16<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}<br>17<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;value&lt;&lt;"(10)=";<br>18<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i=0;i&lt;7;++i)<br>19<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;j=0;j&lt;count[i];++j)<br>20<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;rom[i];<br>21<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;"(Rom)"&lt;&lt;endl;<br>22<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br>23<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}<br>24<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></div>
<br>②<br><span style="FONT-SIZE: 10pt">计算某一天是星期几<br>由用户输入一个年份(如2002)以及该年元旦是星期几，而后再输入改年的任意一个月份日期(如输入12和31，表示12月31日)，由程序<br>计算出这一天是星期几。<br>例如，程序执行后，可在屏幕上显示形式的结果：<br>input YEAR and what WEEKDAY of 1.1(0~6) in that year:2002 2<br>input MONTH(1~12) and DAY(1~28|29|30|31) of that year:12 31<br>2002.12.31 =&gt; weekday:2<br>程序如下：</span><br>
<div style="FONT-SIZE: 10pt">&nbsp;1<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#include&lt;iostream&gt;<br>&nbsp;2<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">using&nbsp;namespace&nbsp;std;<br>&nbsp;3<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">int&nbsp;main()<br>&nbsp;4<img id=Codehighlighter1_51_651_Open_Image onclick="this.style.display='none'; Codehighlighter1_51_651_Open_Text.style.display='none'; Codehighlighter1_51_651_Closed_Image.style.display='inline'; Codehighlighter1_51_651_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img id=Codehighlighter1_51_651_Closed_Image onclick="this.style.display='none'; Codehighlighter1_51_651_Closed_Text.style.display='none'; Codehighlighter1_51_651_Open_Image.style.display='inline'; Codehighlighter1_51_651_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif">{<br>&nbsp;5<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;year,pre_day;<br>&nbsp;6<img id=Codehighlighter1_90_125_Open_Image onclick="this.style.display='none'; Codehighlighter1_90_125_Open_Text.style.display='none'; Codehighlighter1_90_125_Closed_Image.style.display='inline'; Codehighlighter1_90_125_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img id=Codehighlighter1_90_125_Closed_Image onclick="this.style.display='none'; Codehighlighter1_90_125_Closed_Text.style.display='none'; Codehighlighter1_90_125_Open_Image.style.display='inline'; Codehighlighter1_90_125_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;days[]={0,31,28,31,30,31,30,31,31,30,31,30};<br>&nbsp;7<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;"Enter&nbsp;YEAR&nbsp;and&nbsp;what&nbsp;WEEKDAY&nbsp;of&nbsp;1.1(0~6)in&nbsp;that&nbsp;year:";<br>&nbsp;8<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cin&gt;&gt;year&gt;&gt;pre_day;<br>&nbsp;9<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;month,day;<br>10<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;"Enter&nbsp;MONTH(1~12)and&nbsp;DAY(1~28|29|30|31)&nbsp;of&nbsp;that&nbsp;year:";<br>11<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cin&gt;&gt;month&gt;&gt;day;<br>12<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;wek;<br>13<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;allday=0;<br>14<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;for(int&nbsp;i=0;i&lt;month;++i)<br>15<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;allday+=days[i];<br>16<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;if(year%400==0&nbsp;||(year%4==0&nbsp;&amp;&amp;&nbsp;year%100!=0))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //判断是否为闰年<br>17<img id=Codehighlighter1_459_499_Open_Image onclick="this.style.display='none'; Codehighlighter1_459_499_Open_Text.style.display='none'; Codehighlighter1_459_499_Closed_Image.style.display='inline'; Codehighlighter1_459_499_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img id=Codehighlighter1_459_499_Closed_Image onclick="this.style.display='none'; Codehighlighter1_459_499_Closed_Text.style.display='none'; Codehighlighter1_459_499_Open_Image.style.display='inline'; Codehighlighter1_459_499_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;{<br>18<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(month&gt;2)allday+=day+1;<br>19<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}<br>20<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;else<br>21<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;allday+=day;<br>22<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;la=allday%7;<br>23<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;wek=pre_day+la-1;<br>24<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;year&lt;&lt;"."&lt;&lt;month&lt;&lt;"."&lt;&lt;day&lt;&lt;"=&gt;"&lt;&lt;"weekday:"&lt;&lt;wek&lt;&lt;endl;<br>25<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;0;<br>26<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}<br>27<img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br></div>
<br>③<br>在字符串中记录各字符出现的次数<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #008080">&nbsp;1</span><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">node</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;last</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">p1;<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;letter[</span><span style="COLOR: #000000">26</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;cc;<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">26</span><span style="COLOR: #000000">;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">i)<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;letter[i]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(last)<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img id=Codehighlighter1_94_218_Open_Image onclick="this.style.display='none'; Codehighlighter1_94_218_Open_Text.style.display='none'; Codehighlighter1_94_218_Closed_Image.style.display='inline'; Codehighlighter1_94_218_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_94_218_Closed_Image onclick="this.style.display='none'; Codehighlighter1_94_218_Closed_Text.style.display='none'; Codehighlighter1_94_218_Open_Image.style.display='inline'; Codehighlighter1_94_218_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_94_218_Closed_Text></span><span id=Codehighlighter1_94_218_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cc</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">last</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">c;<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(cc</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">A</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">cc</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">Z</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;letter[cc</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">A</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(cc</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">cc</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">z</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">)<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;letter[cc</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">a</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;last</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">last</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">next;<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span></div>
<img src ="http://www.cppblog.com/xingjiegaojue/aggbug/93497.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xingjiegaojue/" target="_blank">张纶</a> 2009-08-16 16:09 <a href="http://www.cppblog.com/xingjiegaojue/archive/2009/08/16/93497.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数组与字符串、字符指针与其他类型指针、赋值参数、指针参数以及引用参数、函数指针</title><link>http://www.cppblog.com/xingjiegaojue/archive/2009/08/12/93099.html</link><dc:creator>张纶</dc:creator><author>张纶</author><pubDate>Wed, 12 Aug 2009 15:08:00 GMT</pubDate><guid>http://www.cppblog.com/xingjiegaojue/archive/2009/08/12/93099.html</guid><wfw:comment>http://www.cppblog.com/xingjiegaojue/comments/93099.html</wfw:comment><comments>http://www.cppblog.com/xingjiegaojue/archive/2009/08/12/93099.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xingjiegaojue/comments/commentRss/93099.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xingjiegaojue/services/trackbacks/93099.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ◆数组和字符串从表面上看，一个字符串就是一个字符数组，但在C++语句中，两者并不完全相同。字符串是一个以串尾符"\0"结尾的字符型数组，但任一个字符型数组不见得必为字符串(因为其中可以不包含"\0"结尾字符)。char&nbsp;string1[7]="China";char&nbsp;string2[]="China";char&nbsp;string3[7]={'C','h','i','n...&nbsp;&nbsp;<a href='http://www.cppblog.com/xingjiegaojue/archive/2009/08/12/93099.html'>阅读全文</a><img src ="http://www.cppblog.com/xingjiegaojue/aggbug/93099.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xingjiegaojue/" target="_blank">张纶</a> 2009-08-12 23:08 <a href="http://www.cppblog.com/xingjiegaojue/archive/2009/08/12/93099.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最小公倍数与最大公约数</title><link>http://www.cppblog.com/xingjiegaojue/archive/2009/08/12/92997.html</link><dc:creator>张纶</dc:creator><author>张纶</author><pubDate>Wed, 12 Aug 2009 02:41:00 GMT</pubDate><guid>http://www.cppblog.com/xingjiegaojue/archive/2009/08/12/92997.html</guid><wfw:comment>http://www.cppblog.com/xingjiegaojue/comments/92997.html</wfw:comment><comments>http://www.cppblog.com/xingjiegaojue/archive/2009/08/12/92997.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xingjiegaojue/comments/commentRss/92997.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xingjiegaojue/services/trackbacks/92997.html</trackback:ping><description><![CDATA[① 求最小公倍数<br>输入两个正整数a、b，求出它们的最小公倍数c。<br>【分析提示】<br>&nbsp;求解方法之一为先求出a、b中最大者max及最小者min，而后找出max的1倍、2倍、&#8230;、n倍中的满足下述条件的最小者c:该c恰好可以被min除尽。<br>【解答】<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_51_372_Open_Image onclick="this.style.display='none'; Codehighlighter1_51_372_Open_Text.style.display='none'; Codehighlighter1_51_372_Closed_Image.style.display='inline'; Codehighlighter1_51_372_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_51_372_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_51_372_Closed_Text.style.display='none'; Codehighlighter1_51_372_Open_Image.style.display='inline'; Codehighlighter1_51_372_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_51_372_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id=Codehighlighter1_51_372_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;max,min;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;value1,value2;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Enter&nbsp;the&nbsp;value:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">value1</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">value2;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(value1</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">value2)<br><img id=Codehighlighter1_180_226_Open_Image onclick="this.style.display='none'; Codehighlighter1_180_226_Open_Text.style.display='none'; Codehighlighter1_180_226_Closed_Image.style.display='inline'; Codehighlighter1_180_226_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_180_226_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_180_226_Closed_Text.style.display='none'; Codehighlighter1_180_226_Open_Image.style.display='inline'; Codehighlighter1_180_226_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_180_226_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id=Codehighlighter1_180_226_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">value1;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">value2;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_241_287_Open_Image onclick="this.style.display='none'; Codehighlighter1_241_287_Open_Text.style.display='none'; Codehighlighter1_241_287_Closed_Image.style.display='inline'; Codehighlighter1_241_287_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_241_287_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_241_287_Closed_Text.style.display='none'; Codehighlighter1_241_287_Open_Image.style.display='inline'; Codehighlighter1_241_287_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_241_287_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id=Codehighlighter1_241_287_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;max</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">value2;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;min</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">value1;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;c</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">max;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(c</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">min)<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;c</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">max;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">c=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">c</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<br>② 求最大公约数<br>【分析提示】<br>(1) 可按如下的方法来求解<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gcd(m,n)=n;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若m%n等于0<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; gcd(m,n)=gcd(n,m%n);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若m%n不等于0<br>(2) 当m%n不等于0时，由于gcd(m,n)=gcd(n,m%n)，即是说，将n当做新m，将m%n当做新n后，接着去判断m%n是否为0，从而有"while(m%n!=0)..."的循环。<br>【解答】<br>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 13px; PADDING-BOTTOM: 4px; BORDER-LEFT: #cccccc 1px solid; WIDTH: 98%; WORD-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: #cccccc 1px solid; BACKGROUND-COLOR: #eeeeee"><span style="COLOR: #008080">&nbsp;1</span><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img id=Codehighlighter1_51_309_Open_Image onclick="this.style.display='none'; Codehighlighter1_51_309_Open_Text.style.display='none'; Codehighlighter1_51_309_Closed_Image.style.display='inline'; Codehighlighter1_51_309_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_51_309_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_51_309_Closed_Text.style.display='none'; Codehighlighter1_51_309_Open_Image.style.display='inline'; Codehighlighter1_51_309_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_51_309_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id=Codehighlighter1_51_309_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;value1,value2;<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Input&nbsp;two&nbsp;values:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">value1</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">value2;<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;m</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">value1,n</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">value2;<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(m</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">n)<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img id=Codehighlighter1_184_239_Open_Image onclick="this.style.display='none'; Codehighlighter1_184_239_Open_Text.style.display='none'; Codehighlighter1_184_239_Closed_Image.style.display='inline'; Codehighlighter1_184_239_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_184_239_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_184_239_Closed_Text.style.display='none'; Codehighlighter1_184_239_Open_Image.style.display='inline'; Codehighlighter1_184_239_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_184_239_Closed_Text style="BORDER-RIGHT: #808080 1px solid; BORDER-TOP: #808080 1px solid; DISPLAY: none; BORDER-LEFT: #808080 1px solid; BORDER-BOTTOM: #808080 1px solid; BACKGROUND-COLOR: #ffffff"></span><span id=Codehighlighter1_184_239_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;tmp</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">m;<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;m</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">n;<br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;n</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">tmp</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">n;<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">gcd(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">value1</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">value2</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">)=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">18</span><span style="COLOR: #000000"><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<br>
<img src ="http://www.cppblog.com/xingjiegaojue/aggbug/92997.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xingjiegaojue/" target="_blank">张纶</a> 2009-08-12 10:41 <a href="http://www.cppblog.com/xingjiegaojue/archive/2009/08/12/92997.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>第四章 数组和指针</title><link>http://www.cppblog.com/xingjiegaojue/archive/2009/08/11/92965.html</link><dc:creator>张纶</dc:creator><author>张纶</author><pubDate>Tue, 11 Aug 2009 14:59:00 GMT</pubDate><guid>http://www.cppblog.com/xingjiegaojue/archive/2009/08/11/92965.html</guid><wfw:comment>http://www.cppblog.com/xingjiegaojue/comments/92965.html</wfw:comment><comments>http://www.cppblog.com/xingjiegaojue/archive/2009/08/11/92965.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xingjiegaojue/comments/commentRss/92965.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xingjiegaojue/services/trackbacks/92965.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: ①与vector类型相似，数组也可以保存某种类型的一组对象；而它们的区别在于，数组的长度是固定的。数组一经创建，就不允许添加新的元素。数组的定义和初始化数组的维数必须用值大于等于1的常量表达式。此常量表达式只能包含整型字面值常量、枚举常量或者有常量表达式初始化的整型const对象。非const变量以及要到运行阶段才知道其值的const变量都不能用于定义数组的维数。数组类型的变量有三个重要的限制:数...&nbsp;&nbsp;<a href='http://www.cppblog.com/xingjiegaojue/archive/2009/08/11/92965.html'>阅读全文</a><img src ="http://www.cppblog.com/xingjiegaojue/aggbug/92965.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xingjiegaojue/" target="_blank">张纶</a> 2009-08-11 22:59 <a href="http://www.cppblog.com/xingjiegaojue/archive/2009/08/11/92965.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>【转】cin、cin.get()、cin.getline()、getline()、gets()等函数的用法</title><link>http://www.cppblog.com/xingjiegaojue/archive/2009/08/11/92876.html</link><dc:creator>张纶</dc:creator><author>张纶</author><pubDate>Tue, 11 Aug 2009 03:05:00 GMT</pubDate><guid>http://www.cppblog.com/xingjiegaojue/archive/2009/08/11/92876.html</guid><wfw:comment>http://www.cppblog.com/xingjiegaojue/comments/92876.html</wfw:comment><comments>http://www.cppblog.com/xingjiegaojue/archive/2009/08/11/92876.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xingjiegaojue/comments/commentRss/92876.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xingjiegaojue/services/trackbacks/92876.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 12px; COLOR: rgb(92,102,114); LINE-HEIGHT: 21px; FONT-FAMILY: verdana; -webkit-border-horizontal-spacing: 2px; -webkit-border-vertical-spacing: 2px">
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">学C++的时候，这几个输入函数弄的有点迷糊；这里做个小结，为了自己复习，也希望对后来者能有所帮助，如果有差错的地方还请各位多多指教（本文所有程序均通过VC 6.0运行）转载请保留作者信息；<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">1、cin<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">1、cin.get()<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">2、cin.getline()<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">3、getline()<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">4、gets()<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">5、getchar()</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><strong style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"><em style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; FONT-STYLE: italic"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(255,0,0); LINE-HEIGHT: 150%; PADDING-TOP: 0px">1、cin&gt;&gt;牋牋牋牋牋</span></em></strong></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,0); LINE-HEIGHT: 150%; PADDING-TOP: 0px">用法1：最基本，也是最常用的用法，输入一个数字：</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,128); LINE-HEIGHT: 150%; PADDING-TOP: 0px">#include &lt;iostream&gt;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">using namespace std;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">main ()<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">{<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">int a,b;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">cin&gt;&gt;a&gt;&gt;b;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">cout&lt;&lt;a+b&lt;&lt;endl;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">}</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">输入：2[回车]3[回车]<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">输出：5</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,0); LINE-HEIGHT: 150%; PADDING-TOP: 0px">用法2：接受一个字符串，遇&#8220;空格&#8221;、&#8220;TAB&#8221;、&#8220;回车&#8221;都结束</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,128); LINE-HEIGHT: 150%; PADDING-TOP: 0px">#include &lt;iostream&gt;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">using namespace std;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">main ()<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">{<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">char a[20];<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">cin&gt;&gt;a;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">cout&lt;&lt;a&lt;&lt;endl;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">}</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">输入：jkljkljkl<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">输出：jkljkljkl</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">输入：jkljkl jkljkl&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,128); LINE-HEIGHT: 150%; PADDING-TOP: 0px">//遇空格结束</span><br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">输出：jkljkl</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><em style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; FONT-STYLE: italic"><strong style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(255,0,0); LINE-HEIGHT: 150%; PADDING-TOP: 0px">2、cin.get()</span></strong></em></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,0); LINE-HEIGHT: 150%; PADDING-TOP: 0px">用法1： cin.get(字符变量名)可以用来接收字符</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,128); LINE-HEIGHT: 150%; PADDING-TOP: 0px">#include &lt;iostream&gt;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">using namespace std;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">main ()<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">{<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">char ch;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">ch=cin.get();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //或者cin.get(ch);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">cout&lt;&lt;ch&lt;&lt;endl;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">}</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">输入：jljkljkl<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">输出：j</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,0); LINE-HEIGHT: 150%; PADDING-TOP: 0px">用法2：cin.get(字符数组名,接收字符数目)用来接收一行字符串,可以接收空格</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,128); LINE-HEIGHT: 150%; PADDING-TOP: 0px">#include &lt;iostream&gt;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">using namespace std;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">main ()<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">{<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">char a[20];<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">cin.get(a,20);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">cout&lt;&lt;a&lt;&lt;endl;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">}</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">输入：jkl jkl jkl<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">输出：jkl jkl jkl</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">输入：abcdeabcdeabcdeabcdeabcde （输入25个字符）<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">输出：abcdeabcdeabcdeabcd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;（接收19个字符+1个'\0'）</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><strong style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"><em style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; FONT-STYLE: italic"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(255,0,0); LINE-HEIGHT: 150%; PADDING-TOP: 0px">3、cin.getline()牋 // 接受一个字符串，可以接收空格并输出</span></em></strong></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><em style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; FONT-STYLE: italic">getline 会将换行符替换为空字符</em></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,128); LINE-HEIGHT: 150%; PADDING-TOP: 0px">#include &lt;iostream&gt;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">using namespace std;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">main ()<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">{<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">char m[20];<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">cin.getline(m,5);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">cout&lt;&lt;m&lt;&lt;endl;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">}</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">输入：jkljkljkl<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">输出：jklj</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">接受5个字符到m中，其中最后一个为'\0'，所以只看到4个字符输出；</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,128); LINE-HEIGHT: 150%; PADDING-TOP: 0px">如果把5改成20：<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"></span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,128); LINE-HEIGHT: 150%; PADDING-TOP: 0px">输入：jkljkljkl<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">输出：jkljkljkl</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,128); LINE-HEIGHT: 150%; PADDING-TOP: 0px">输入：jklf fjlsjf fjsdklf<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">输出：jklf fjlsjf fjsdklf</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">//延伸：<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">//cin.getline()实际上有三个参数，cin.getline(接受字符串的看哦那间m,接受个数5,结束字符)<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">//当第三个参数省略时，系统默认为'\0'<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">//如果将例子中cin.getline()改为cin.getline(m,5,'a');当输入jlkjkljkl时输出jklj，输入jkaljkljkl时，输出jk</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">当用在多维数组中的时候，也可以用cin.getline(m[i],20)之类的用法：</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,128); LINE-HEIGHT: 150%; PADDING-TOP: 0px">#include&lt;iostream&gt;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">#include&lt;string&gt;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">using namespace std;</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,128); LINE-HEIGHT: 150%; PADDING-TOP: 0px">main ()<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">{<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">char m[3][20];<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">for(int i=0;i&lt;3;i++)<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">{<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">cout&lt;&lt;"\n请输入第"&lt;&lt;i+1&lt;&lt;"个字符串："&lt;&lt;endl;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">cin.getline(m[i],20);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">}</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,128); LINE-HEIGHT: 150%; PADDING-TOP: 0px">cout&lt;&lt;endl;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">for(int j=0;j&lt;3;j++)<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">cout&lt;&lt;"输出m["&lt;&lt;j&lt;&lt;"]的值:"&lt;&lt;m[j]&lt;&lt;endl;</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,128); LINE-HEIGHT: 150%; PADDING-TOP: 0px">}</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">请输入第1个字符串：<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">kskr1</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">请输入第2个字符串：<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">kskr2</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">请输入第3个字符串：<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">kskr3</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">输出m[0]的值:kskr1<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">输出m[1]的值:kskr2<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">输出m[2]的值:kskr3</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><em style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; FONT-STYLE: italic"><strong style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(255,0,0); LINE-HEIGHT: 150%; PADDING-TOP: 0px">4、getline()牋牋 // 接受一个字符串，可<span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(255,0,0); LINE-HEIGHT: 150%; PADDING-TOP: 0px">以接收空格并输出，</span></span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(255,0,0); LINE-HEIGHT: 150%; PADDING-TOP: 0px">需包含&#8220;#include&lt;string&gt;&#8221;</span></strong></em></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,128); LINE-HEIGHT: 150%; PADDING-TOP: 0px">#include&lt;iostream&gt;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">#include&lt;string&gt;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">using namespace std;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">main ()<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">{<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">string str;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">getline(cin,str);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">cout&lt;&lt;str&lt;&lt;endl;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">}</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">输入：jkljkljkl<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">输出：jkljkljkl</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">输入：jkl jfksldfj jklsjfl<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">输出：jkl jfksldfj jklsjfl</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">和cin.getline()类似，但是cin.getline()属于istream流，而getline()属于string流，是不一样的两个函数</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(255,0,0); LINE-HEIGHT: 150%; PADDING-TOP: 0px"><strong style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"><em style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; FONT-STYLE: italic">5、gets()牋牋牋� // 接受一个字符串，可以接收空格并输出，需包含&#8220;#include&lt;string&gt;&#8221;</em></strong></span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,128); LINE-HEIGHT: 150%; PADDING-TOP: 0px">#include&lt;iostream&gt;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">#include&lt;string&gt;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">using namespace std;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">main ()<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">{<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">char m[20];<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">gets(m);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //不能写成m=gets();<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">cout&lt;&lt;m&lt;&lt;endl;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">}</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">输入：jkljkljkl<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">输出：jkljkljkl</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">输入：jkl jkl jkl<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">输出：jkl jkl jkl</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">类似cin.getline()里面的一个例子，gets()同样可以用在多维数组里面：</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,128); LINE-HEIGHT: 150%; PADDING-TOP: 0px">#include&lt;iostream&gt;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">#include&lt;string&gt;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">using namespace std;</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,128); LINE-HEIGHT: 150%; PADDING-TOP: 0px">main ()<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">{<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">char m[3][20];<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">for(int i=0;i&lt;3;i++)<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">{<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">cout&lt;&lt;"\n请输入第"&lt;&lt;i+1&lt;&lt;"个字符串："&lt;&lt;endl;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">gets(m[i]);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">}</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,128); LINE-HEIGHT: 150%; PADDING-TOP: 0px">cout&lt;&lt;endl;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">for(int j=0;j&lt;3;j++)<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">cout&lt;&lt;"输出m["&lt;&lt;j&lt;&lt;"]的值:"&lt;&lt;m[j]&lt;&lt;endl;</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,128); LINE-HEIGHT: 150%; PADDING-TOP: 0px">}</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">请输入第1个字符串：<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">kskr1</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">请输入第2个字符串：<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">kskr2</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">请输入第3个字符串：<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">kskr3</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">输出m[0]的值:kskr1<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">输出m[1]的值:kskr2<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">输出m[2]的值:kskr3</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">自我感觉gets()和cin.getline()的用法很类似，只不过cin.getline()多一个参数罢了；</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">这里顺带说明一下，对于本文中的这个kskr1,kskr2,kskr3的例子，对于cin&gt;&gt;也可以适用，原因是这里输入的没有空格，如果输入了空格，比如&#8220;ks kr jkl[回车]&#8221;那么cin就会已经接收到3个字符串，&#8220;ks,kr,jkl&#8221;；再如&#8220;kskr 1[回车]kskr 2[回车]&#8221;，那么则接收&#8220;kskr,1,kskr&#8221;；这不是我们所要的结果！而cin.getline()和gets()因为可以接收空格，所以不会产生这个错误；</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><strong style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px"><em style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px; FONT-STYLE: italic"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(255,0,0); LINE-HEIGHT: 150%; PADDING-TOP: 0px">6、getchar()牋 //接受一个字符，需包含<span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(255,0,0); LINE-HEIGHT: 150%; PADDING-TOP: 0px">&#8220;</span></span><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(255,0,0); LINE-HEIGHT: 150%; PADDING-TOP: 0px">#include&lt;string&gt;&#8221;</span></em></strong></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(128,128,128); LINE-HEIGHT: 150%; PADDING-TOP: 0px">#include&lt;iostream&gt;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">#include&lt;string&gt;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">using namespace std;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">main ()<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">{<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">char ch;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">ch=getchar();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;//不能写成getchar(ch);<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">cout&lt;&lt;ch&lt;&lt;endl;<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">}</span></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">输入：jkljkljkl<br style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-TOP: 0px">输出：j</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px">//getchar()是C语言的函数，C++也可以兼容，但是尽量不用或少用；</p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><br></p>
<p style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; LINE-HEIGHT: 1.8em; PADDING-TOP: 0px"><span style="FONT-SIZE: 14pt">原文地址:</span><a style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; PADDING-BOTTOM: 0px; MARGIN: 0px; COLOR: rgb(92,102,114); PADDING-TOP: 0px; TEXT-DECORATION: underline" href="http://blog.csdn.net/wintsy/archive/2009/02/22/3920644.aspx" target=_blank><span style="FONT-SIZE: 14pt">http://blog.csdn.net/wintsy/archive/2009/02/22/3920644.aspx</span></a><br></p>
</span>
<img src ="http://www.cppblog.com/xingjiegaojue/aggbug/92876.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xingjiegaojue/" target="_blank">张纶</a> 2009-08-11 11:05 <a href="http://www.cppblog.com/xingjiegaojue/archive/2009/08/11/92876.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>