﻿<?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>IT博客-IT小小鸟的学习日记-随笔分类-c/c++</title><link>http://www.cnitblog.com/lenatem/category/7716.html</link><description /><language>zh-cn</language><lastBuildDate>Mon, 26 Sep 2011 13:40:28 GMT</lastBuildDate><pubDate>Mon, 26 Sep 2011 13:40:28 GMT</pubDate><ttl>60</ttl><item><title>C语言多线程编程(一)</title><link>http://www.cnitblog.com/lenatem/archive/2010/03/30/64930.html</link><dc:creator>雅量</dc:creator><author>雅量</author><pubDate>Tue, 30 Mar 2010 05:49:00 GMT</pubDate><guid>http://www.cnitblog.com/lenatem/archive/2010/03/30/64930.html</guid><wfw:comment>http://www.cnitblog.com/lenatem/comments/64930.html</wfw:comment><comments>http://www.cnitblog.com/lenatem/archive/2010/03/30/64930.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lenatem/comments/commentRss/64930.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lenatem/services/trackbacks/64930.html</trackback:ping><description><![CDATA[先来看一个基本的例子：<br><span style="COLOR: #000000">
<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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">pthread.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</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 src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_68_161_Open_Image onclick="this.style.display='none'; Codehighlighter1_68_161_Open_Text.style.display='none'; Codehighlighter1_68_161_Closed_Image.style.display='inline'; Codehighlighter1_68_161_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_68_161_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_68_161_Closed_Text.style.display='none'; Codehighlighter1_68_161_Open_Image.style.display='inline'; Codehighlighter1_68_161_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;tprocess1(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;args)</span><span id=Codehighlighter1_68_161_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_68_161_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_87_137_Open_Image onclick="this.style.display='none'; Codehighlighter1_87_137_Open_Text.style.display='none'; Codehighlighter1_87_137_Closed_Image.style.display='inline'; Codehighlighter1_87_137_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_87_137_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_87_137_Closed_Text.style.display='none'; Codehighlighter1_87_137_Open_Image.style.display='inline'; Codehighlighter1_87_137_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span id=Codehighlighter1_87_137_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_87_137_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">tprocess1</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;NULL;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_191_283_Open_Image onclick="this.style.display='none'; Codehighlighter1_191_283_Open_Text.style.display='none'; Codehighlighter1_191_283_Closed_Image.style.display='inline'; Codehighlighter1_191_283_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_191_283_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_191_283_Closed_Text.style.display='none'; Codehighlighter1_191_283_Open_Image.style.display='inline'; Codehighlighter1_191_283_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;tprocess2(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;args)</span><span id=Codehighlighter1_191_283_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_191_283_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_210_259_Open_Image onclick="this.style.display='none'; Codehighlighter1_210_259_Open_Text.style.display='none'; Codehighlighter1_210_259_Closed_Image.style.display='inline'; Codehighlighter1_210_259_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_210_259_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_210_259_Closed_Text.style.display='none'; Codehighlighter1_210_259_Open_Image.style.display='inline'; Codehighlighter1_210_259_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)</span><span id=Codehighlighter1_210_259_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_210_259_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">tprocess2</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;NULL;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_296_495_Open_Image onclick="this.style.display='none'; Codehighlighter1_296_495_Open_Text.style.display='none'; Codehighlighter1_296_495_Closed_Image.style.display='inline'; Codehighlighter1_296_495_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_296_495_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_296_495_Closed_Text.style.display='none'; Codehighlighter1_296_495_Open_Image.style.display='inline'; Codehighlighter1_296_495_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()</span><span id=Codehighlighter1_296_495_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_296_495_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_t&nbsp;t1;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_t&nbsp;t2;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_create(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">t1,NULL,tprocess1,NULL);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_create(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">t2,NULL,tprocess2,NULL);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_join(t1,NULL);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<br></span>在上面的例子中，我们首先加入了pthread.h文件包含，这是所以pthread多线程程序所必须的，接着是iostream我们进行输入输出时要用到，接着就是两个函数的定义，这和普通的函数没有什么区别，之所以写成的<br>&nbsp;程序代码<br><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;tprocess1(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;args)<br>这样的形式，完全是为了迎合pthread_create函数的参数类型，你也可以不这样定义，只要在调用pthread_create创建线程的时候强制转换一下指针类型就可以了。<br><br>这两个函数将被用做线程的执行体，也就是说在两个线程里同时运行这两个函数。<br><br>现在我们来看main函数，和pthread有关的调用都在这里了。<br>pthread_t是线程结构，用来保存线程相关数据，你也可以理解为是线程类型，声明一个线程对象（变量）。<br>&nbsp;程序代码<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_t&nbsp;t1;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_t&nbsp;t2;<br>这里我们声明了两个线程变量t1,t2<br><br>&nbsp;程序代码<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_create(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">t1,NULL,tprocess1,NULL);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_create(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">t2,NULL,tprocess2,NULL);<br>这两句非常重要，pthread_create用来创建线程并启动，他的原型是<br>&nbsp;程序代码<br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;pthread_create(pthread_t&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;thread,&nbsp;pthread_attr_t&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;attr,&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">start_routine)(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">),&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;arg);<br>我们可以知道第一个参数是线程指针，第二参数是线程属性指针,线程属性pthread_attr_t用来指定线程优先级等属性，一般的情况下，我们没有必要修改，使用默认属性来构造线程，所以这里一般取NULL，我们也是这样做的，第三个参数是一个函数指针，就是线程要执行的代码，这里我们分别要执行tprocess1&nbsp;tprocess2就写成了上面的样子，这里这个函数指针的类型定义是返回一个空类型指针，接收一个空类型指针参数的函数指针，如果你的函数不是这个定义，那就可以直接转化一下就可以了。<br><br>写完这两行代码，两个线程就已经执行起来了，但是如果你省略了<br>&nbsp;程序代码<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pthread_join(t1,NULL);<br>然后尝试编译运行程序的时候你会发现程序似乎什么也没干就退出了，是的，那是因为程序的主线程退出的时候操作系统会关闭应用程序使用的所有资源，包括线程&#8230;&#8230;所以在main函数结束前我们得想办法让程序停下来，pthread_join方法的功能就是等待线程结束，要等的线程就是第一个参数，程序会在这个地方停下来，直到线程结束，第二个参数用来接受线程函数的返回值，是void</span><span style="COLOR: #000000">**</span><span style="COLOR: #000000">类型的指针，如果没有返回值，就直接设为NULL吧。<br><br>程序写好了，我们怎么编译运行它呢？<br>如果你使用的是Linux:<br>在终端里输入<br>g</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;thread.cpp&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">othread&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">lpthread<br>.</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">thread<br>就可以完成程序的编译及运行<br></span><br><br><br>摘自：<a href="http://www.cnblogs.com/lovko/archive/2009/01/15/1376032.html">http://www.cnblogs.com/lovko/archive/2009/01/15/1376032.html</a>
<img src ="http://www.cnitblog.com/lenatem/aggbug/64930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lenatem/" target="_blank">雅量</a> 2010-03-30 13:49 <a href="http://www.cnitblog.com/lenatem/archive/2010/03/30/64930.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>strftime（）函数</title><link>http://www.cnitblog.com/lenatem/archive/2010/03/24/64801.html</link><dc:creator>雅量</dc:creator><author>雅量</author><pubDate>Wed, 24 Mar 2010 02:04:00 GMT</pubDate><guid>http://www.cnitblog.com/lenatem/archive/2010/03/24/64801.html</guid><wfw:comment>http://www.cnitblog.com/lenatem/comments/64801.html</wfw:comment><comments>http://www.cnitblog.com/lenatem/archive/2010/03/24/64801.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lenatem/comments/commentRss/64801.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lenatem/services/trackbacks/64801.html</trackback:ping><description><![CDATA[我们可以使用strftime（）函数将时间格式化为我们想要的格式。它的原型如下：<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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">size_t&nbsp;strftime(<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&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">strDest,<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;size_t&nbsp;maxsize,<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">format,<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;tm&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">timeptr&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>);</span></div>
我们可以根据format指向字符串中格式命令把timeptr中保存的时间信息放在strDest指向的字符串中，最多向strDest中存放maxsize个字符。该函数返回向strDest指向的字符串中放置的字符数。<br><br>函数strftime()的操作有些类似于sprintf()：识别以百分号(%)开始的格式命令集合，格式化输出结果放在一个字符串中。格式化命令说明串strDest中各种日期和时间信息的确切表示方法。格式串中的其他字符原样放进串中。格式命令列在下面，它们是区分大小写的。<br><br>%a 星期几的简写 <br>%A 星期几的全称 <br>%b 月分的简写 <br>%B 月份的全称 <br>%c 标准的日期的时间串 <br>%C 年份的后两位数字 <br>%d 十进制表示的每月的第几天 <br>%D 月/天/年 <br>%e 在两字符域中，十进制表示的每月的第几天 <br>%F 年-月-日 <br>%g 年份的后两位数字，使用基于周的年 <br>%G 年分，使用基于周的年 <br>%h 简写的月份名 <br>%H 24小时制的小时 <br>%I 12小时制的小时<br>%j 十进制表示的每年的第几天 <br>%m 十进制表示的月份 <br>%M 十时制表示的分钟数 <br>%n 新行符 <br>%p 本地的AM或PM的等价显示 <br>%r 12小时的时间 <br>%R 显示小时和分钟：hh:mm <br>%S 十进制的秒数 <br>%t 水平制表符 <br>%T 显示时分秒：hh:mm:ss <br>%u 每周的第几天，星期一为第一天 （值从0到6，星期一为0）<br>%U 第年的第几周，把星期日做为第一天（值从0到53）<br>%V 每年的第几周，使用基于周的年 <br>%w 十进制表示的星期几（值从0到6，星期天为0）<br>%W 每年的第几周，把星期一做为第一天（值从0到53） <br>%x 标准的日期串 <br>%X 标准的时间串 <br>%y 不带世纪的十进制年份（值从0到99）<br>%Y 带世纪部分的十制年份 <br>%z，%Z 时区名称，如果不能得到时区名称则返回空字符。<br>%% 百分号<br><br>如果想显示现在是几点了，并以12小时制显示，就象下面这段程序：<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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">＃include&nbsp;&#8220;time.h&#8221;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>＃include&nbsp;&#8220;stdio.h&#8221;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_52_194_Open_Image onclick="this.style.display='none'; Codehighlighter1_52_194_Open_Text.style.display='none'; Codehighlighter1_52_194_Closed_Image.style.display='inline'; Codehighlighter1_52_194_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_52_194_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_52_194_Closed_Text.style.display='none'; Codehighlighter1_52_194_Open_Image.style.display='inline'; Codehighlighter1_52_194_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_52_194_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_52_194_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;tm&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">ptr;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>time_t&nbsp;lt;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;str[</span><span style="COLOR: #000000">80</span><span style="COLOR: #000000">];<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>lt</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">time(NULL);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>ptr</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">localtime(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">lt);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>strftime(str,</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">It&nbsp;is&nbsp;now&nbsp;%I&nbsp;%p</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,ptr);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>printf(str);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></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.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
其运行结果为：<br>It is now 4PM<br><br>摘自：<a href="http://www.cnblogs.com/caolisong/archive/2007/04/11/709732.html">http://www.cnblogs.com/caolisong/archive/2007/04/11/709732.html</a><br>
<img src ="http://www.cnitblog.com/lenatem/aggbug/64801.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lenatem/" target="_blank">雅量</a> 2010-03-24 10:04 <a href="http://www.cnitblog.com/lenatem/archive/2010/03/24/64801.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>stdarg.h中三个宏va_start ，va_arg和va_end </title><link>http://www.cnitblog.com/lenatem/archive/2010/03/24/64800.html</link><dc:creator>雅量</dc:creator><author>雅量</author><pubDate>Wed, 24 Mar 2010 01:39:00 GMT</pubDate><guid>http://www.cnitblog.com/lenatem/archive/2010/03/24/64800.html</guid><wfw:comment>http://www.cnitblog.com/lenatem/comments/64800.html</wfw:comment><comments>http://www.cnitblog.com/lenatem/archive/2010/03/24/64800.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lenatem/comments/commentRss/64800.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lenatem/services/trackbacks/64800.html</trackback:ping><description><![CDATA[<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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdarg.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;N</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Stdarg(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;a1,<img src="http://www.cnitblog.com/Images/dot.gif">)<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_111_333_Open_Image onclick="this.style.display='none'; Codehighlighter1_111_333_Open_Text.style.display='none'; Codehighlighter1_111_333_Closed_Image.style.display='inline'; Codehighlighter1_111_333_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_111_333_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_111_333_Closed_Text.style.display='none'; Codehighlighter1_111_333_Open_Image.style.display='inline'; Codehighlighter1_111_333_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_111_333_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_111_333_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;va_list&nbsp;argp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;&nbsp;ary[N];<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;va_start(argp,a1);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ary[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">a1;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;N;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ary[i]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">va_arg(argp,</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;va_end(argp);&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(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">&nbsp;N;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">ary[i]</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;main()<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img id=Codehighlighter1_352_383_Open_Image onclick="this.style.display='none'; Codehighlighter1_352_383_Open_Text.style.display='none'; Codehighlighter1_352_383_Closed_Image.style.display='inline'; Codehighlighter1_352_383_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_352_383_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_352_383_Closed_Text.style.display='none'; Codehighlighter1_352_383_Open_Image.style.display='inline'; Codehighlighter1_352_383_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_352_383_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_352_383_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;Stdarg(</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">12</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">64</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">34</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">23</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<p>(一)写一个简单的可变参数的C函数</p>
<p>下面我们来探讨如何写一个简单的可变参数的C函数.写可变参数的<br>C函数要在程序中用到以下这些宏:<br>void va_start( va_list arg_ptr, prev_param );</p>
<p>type va_arg( va_list arg_ptr, type );</p>
<p>void va_end( va_list arg_ptr );<br>va在这里是variable-argument(可变参数)的意思.<br>这些宏定义在stdarg.h中,所以用到可变参数的程序应该包含这个<br>头文件.下面我们写一个简单的可变参数的函数,改函数至少有一个整数<br>参数,第二个参数也是整数,是可选的.函数只是打印这两个参数的值.<br>void simple_va_fun(int i, ...)<br>{<br>va_list arg_ptr;<br>int j=0;</p>
<p>va_start(arg_ptr, i);<br>j=va_arg(arg_ptr, int);<br>va_end(arg_ptr);<br>printf("%d %d\n", i, j);<br>return;<br>}<br>我们可以在我们的头文件中这样声明我们的函数:<br>extern void simple_va_fun(int i, ...);<br>我们在程序中可以这样调用:<br>simple_va_fun(100);<br>simple_va_fun(100,200);<br>从这个函数的实现可以看到,我们使用可变参数应该有以下步骤:<br>1)首先在函数里定义一个va_list型的变量,这里是arg_ptr,这个变<br>量是指向参数的指针.<br>2)然后用va_start宏初始化变量arg_ptr,这个宏的第二个参数是第<br>一个可变参数的前一个参数,是一个固定的参数.<br>3)然后用va_arg返回可变的参数,并赋值给整数j. va_arg的第二个<br>参数是你要返回的参数的类型,这里是int型.<br>4)最后用va_end宏结束可变参数的获取.然后你就可以在函数里使<br>用第二个参数了.如果函数有多个可变参数的,依次调用va_arg获<br>取各个参数.<br>如果我们用下面三种方法调用的话,都是合法的,但结果却不一样:<br>1)simple_va_fun(100);<br>结果是:100 -123456789(会变的值)<br>2)simple_va_fun(100,200);<br>结果是:100 200<br>3)simple_va_fun(100,200,300);<br>结果是:100 200</p>
<p>我们看到第一种调用有错误,第二种调用正确,第三种调用尽管结果<br>正确,但和我们函数最初的设计有冲突.下面一节我们探讨出现这些结果<br>的原因和可变参数在编译器中是如何处理的.</p>
<p>(二)可变参数在编译器中的处理</p>
<p>我们知道va_start,va_arg,va_end是在stdarg.h中被定义成宏的,<br>由于1)硬件平台的不同 2)编译器的不同,所以定义的宏也有所不同,下<br>面以VC++中stdarg.h里x86平台的宏定义摘录如下(&#8217;\&#8217;号表示折行):</p>
<p>typedef char * va_list;</p>
<p>#define _INTSIZEOF(n) \<br>((sizeof(n)+sizeof(int)-1)&amp;~(sizeof(int) - 1) )</p>
<p>#define va_start(ap,v) ( ap = (va_list)&amp;v + _INTSIZEOF(v) )</p>
<p>#define va_arg(ap,t) \<br>( *(t *)((ap += _INTSIZEOF(t)) - _INTSIZEOF(t)) )</p>
<p>#define va_end(ap) ( ap = (va_list)0 )</p>
<p>定义_INTSIZEOF(n)主要是为了某些需要内存的对齐的系统.C语言的函<br>数是从右向左压入堆栈的,图(1)是函数的参数在堆栈中的分布位置.我<br>们看到va_list被定义成char*,有一些平台或操作系统定义为void*.再<br>看va_start的定义,定义为&amp;v+_INTSIZEOF(v),而&amp;v是固定参数在堆栈的<br>地址,所以我们运行va_start(ap, v)以后,ap指向第一个可变参数在堆<br>栈的地址,如图:</p>
<p>高地址|-----------------------------|<br>|函数返回地址 |<br>|-----------------------------|<br>|....... |<br>|-----------------------------|<br>|第n个参数(第一个可变参数) |<br>|-----------------------------|&lt;--va_start后ap指向<br>|第n-1个参数(最后一个固定参数)|<br>低地址|-----------------------------|&lt;-- &amp;v<br>图( 1 )</p>
<p>然后,我们用va_arg()取得类型t的可变参数值,以上例为int型为例,我<br>们看一下va_arg取int型的返回值:<br>j= ( *(int*)((ap += _INTSIZEOF(int))-_INTSIZEOF(int)) );<br>首先ap+=sizeof(int),已经指向下一个参数的地址了.然后返回<br>ap-sizeof(int)的int*指针,这正是第一个可变参数在堆栈里的地址<br>(图2).然后用*取得这个地址的内容(参数值)赋给j.</p>
<p>高地址|-----------------------------|<br>|函数返回地址 |<br>|-----------------------------|<br>|....... |<br>|-----------------------------|&lt;--va_arg后ap指向<br>|第n个参数(第一个可变参数) |<br>|-----------------------------|&lt;--va_start后ap指向<br>|第n-1个参数(最后一个固定参数)|<br>低地址|-----------------------------|&lt;-- &amp;v<br>图( 2 )</p>
<p>最后要说的是va_end宏的意思,x86平台定义为ap=(char*)0;使ap不再<br>指向堆栈,而是跟NULL一样.有些直接定义为((void*)0),这样编译器不<br>会为va_end产生代码,例如gcc在linux的x86平台就是这样定义的.<br>在这里大家要注意一个问题:由于参数的地址用于va_start宏,所<br>以参数不能声明为寄存器变量或作为函数或数组类型.<br>关于va_start, va_arg, va_end的描述就是这些了,我们要注意的<br>是不同的操作系统和硬件平台的定义有些不同,但原理却是相似的.</p>
<p>(三)可变参数在编程中要注意的问题</p>
<p>因为va_start, va_arg, va_end等定义成宏,所以它显得很愚蠢,<br>可变参数的类型和个数完全在该函数中由程序代码控制,它并不能智能<br>地识别不同参数的个数和类型.<br>有人会问:那么printf中不是实现了智能识别参数吗?那是因为函数<br>printf是从固定参数format字符串来分析出参数的类型,再调用va_arg<br>的来获取可变参数的.也就是说,你想实现智能识别可变参数的话是要通<br>过在自己的程序里作判断来实现的.<br>另外有一个问题,因为编译器对可变参数的函数的原型检查不够严<br>格,对编程查错不利.如果simple_va_fun()改为:<br>void simple_va_fun(int i, ...)<br>{<br>va_list arg_ptr;<br>char *s=NULL;</p>
<p>va_start(arg_ptr, i);<br>s=va_arg(arg_ptr, char*);<br>va_end(arg_ptr);<br>printf("%d %s\n", i, s);<br>return;<br>}<br>可变参数为char*型,当我们忘记用两个参数来调用该函数时,就会出现<br>core dump(Unix) 或者页面非法的错误(window平台).但也有可能不出<br>错,但错误却是难以发现,不利于我们写出高质量的程序.<br>以下提一下va系列宏的兼容性.<br>System V Unix把va_start定义为只有一个参数的宏:<br>va_start(va_list arg_ptr);<br>而ANSI C则定义为:<br>va_start(va_list arg_ptr, prev_param);<br>如果我们要用system V的定义,应该用vararg.h头文件中所定义的<br>宏,ANSI C的宏跟system V的宏是不兼容的,我们一般都用ANSI C,所以<br>用ANSI C的定义就够了,也便于程序的移植.</p>
<p><br>小结:<br>可变参数的函数原理其实很简单,而va系列是以宏定义来定义的,实<br>现跟堆栈相关.我们写一个可变函数的C函数时,有利也有弊,所以在不必<br>要的场合,我们无需用到可变参数.如果在C++里,我们应该利用C++的多<br>态性来实现可变参数的功能,尽量避免用C语言的方式来实现.&nbsp; <br><br>摘自：<a href="http://blog.csdn.net/zxianrong/archive/2009/01/04/3706405.aspx">http://blog.csdn.net/zxianrong/archive/2009/01/04/3706405.aspx</a><br></p>
<img src ="http://www.cnitblog.com/lenatem/aggbug/64800.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lenatem/" target="_blank">雅量</a> 2010-03-24 09:39 <a href="http://www.cnitblog.com/lenatem/archive/2010/03/24/64800.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CreateMutex---防止程序启动两次的方法</title><link>http://www.cnitblog.com/lenatem/archive/2010/03/17/64694.html</link><dc:creator>雅量</dc:creator><author>雅量</author><pubDate>Wed, 17 Mar 2010 01:37:00 GMT</pubDate><guid>http://www.cnitblog.com/lenatem/archive/2010/03/17/64694.html</guid><wfw:comment>http://www.cnitblog.com/lenatem/comments/64694.html</wfw:comment><comments>http://www.cnitblog.com/lenatem/archive/2010/03/17/64694.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lenatem/comments/commentRss/64694.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lenatem/services/trackbacks/64694.html</trackback:ping><description><![CDATA[<p>进程的互斥运行</p>
<p>　　正常情况下，一个进程的运行一般是不会影响到其他正在运行的进程的。但是对于某些有特殊要求的如以独占方式使用串行口等硬件设备的程序就要求在其进程运行期间不允许其他试图使用此端口设备的程序运行的，而且此类程序通常也不允许运行同一个程序的多个实例。这就引出了进程互斥的问题。</p>
<p>　　实现进程互斥的核心思想比较简单：进程在启动时首先检查当前系统是否已经存在有此进程的实例，如果没有，进程将成功创建并设置标识实例已经存在的标记。此后再创建进程时将会通过该标记而知晓其实例已经存在，从而保证进程在系统中只能存在一个实例。具体可以采取内存映射文件、有名事件量、有名互斥量以及全局共享变量等多种方法来实现。</p>
<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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;创建互斥量</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">HANDLE&nbsp;m_hMutex&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;CreateMutex(NULL,&nbsp;FALSE,&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Sample07</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;检查错误代码</span><span style="COLOR: #008000"><br><img id=Codehighlighter1_119_212_Open_Image onclick="this.style.display='none'; Codehighlighter1_119_212_Open_Text.style.display='none'; Codehighlighter1_119_212_Closed_Image.style.display='inline'; Codehighlighter1_119_212_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_119_212_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_119_212_Closed_Text.style.display='none'; Codehighlighter1_119_212_Open_Image.style.display='inline'; Codehighlighter1_119_212_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(GetLastError()&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;ERROR_ALREADY_EXISTS)&nbsp;</span><span id=Codehighlighter1_119_212_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_119_212_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;如果已有互斥量存在则释放句柄并复位互斥量</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">　CloseHandle(m_hMutex);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　m_hMutex&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;NULL;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>　</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;程序退出</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">　</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;FALSE;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 上面这段代码演示了有名互斥量在进程互斥中的用法。代码的核心是CreateMutex（）对有名互斥量的创建。CreateMutex（）函数可用来创建一个有名或无名的互斥量对象，其函数原型为：</p>
<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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">HANDLE&nbsp;CreateMutex(<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>　LPSECURITY_ATTRIBUTES&nbsp;lpMutexAttributes,&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;指向安全属性的指针</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">　BOOL&nbsp;bInitialOwner,&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;初始化互斥对象的所有者</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">　LPCTSTR&nbsp;lpName&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;指向互斥对象名的指针</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">);</span></div>
<p>如果函数成功执行，将返回一个互斥量对象的句柄。如果在CreateMutex（）执行前已经存在有相同名字的互斥量，函数将返回这个已经存在互斥量的句柄，并且可以通过GetLastError（）得到错误代码ERROR_ALREADY_EXIST。可见，通过对错误代码ERROR_ALREADY_EXIST的检测可以实现CreateMutex（）对进程的互斥。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 建立互斥体，用来同步。如果一个线程获取了互斥体，则要获取该互斥体的第二个线程将被挂起，直到第一个线程释放该互斥体。 </p>
<p>参数 <br>lpMutexAttributes <br>指向一个SECURITY_ATTRIBUTES结构的指针，这个结构决定互斥体句柄是否被子进程继承。&nbsp;&nbsp;&nbsp;&nbsp; <br>bInitialOwner <br>布尔类型，决定互斥体的创建者是否为拥有者 <br>lpName <br>指向互斥体名字字符串的指针。互斥体可以有名字。 <br>互斥体的好处是可以在进程间共享</p>
<p><br>本文来自CSDN博客，转载请标明出处：<a href="http://blog.csdn.net/laura0502/archive/2009/01/20/3838732.aspx">http://blog.csdn.net/laura0502/archive/2009/01/20/3838732.aspx</a><br><br><br>摘自：<a href="http://blog.csdn.net/laura0502/archive/2009/01/20/3838732.aspx">http://blog.csdn.net/laura0502/archive/2009/01/20/3838732.aspx</a></p>
<img src ="http://www.cnitblog.com/lenatem/aggbug/64694.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lenatem/" target="_blank">雅量</a> 2010-03-17 09:37 <a href="http://www.cnitblog.com/lenatem/archive/2010/03/17/64694.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>extern用法</title><link>http://www.cnitblog.com/lenatem/archive/2009/11/27/62880.html</link><dc:creator>雅量</dc:creator><author>雅量</author><pubDate>Fri, 27 Nov 2009 13:37:00 GMT</pubDate><guid>http://www.cnitblog.com/lenatem/archive/2009/11/27/62880.html</guid><wfw:comment>http://www.cnitblog.com/lenatem/comments/62880.html</wfw:comment><comments>http://www.cnitblog.com/lenatem/archive/2009/11/27/62880.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lenatem/comments/commentRss/62880.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lenatem/services/trackbacks/62880.html</trackback:ping><description><![CDATA[摘自：<a href="http://zhidao.baidu.com/question/96882132.html">http://zhidao.baidu.com/question/96882132.html</a><br><br>用例子给你示范 <br>// 1.cpp <br>int x = 10; <br>// 2.cpp 注意没有包含1.cpp <br>#include &lt;iostream&gt; <br>using namespace std; <br>extern int x;<br>int main () <br>{ cout &lt;&lt; x &lt;&lt; endl; } <br>//则输出10 <br><span style="COLOR: red">两个文件同在一个项目</span>（project）中，你不包含某个文件（cpp）而可以用它内部定义的变量，(里是.pp不是.h, 因为在.h中定义的数据不能在.cpp中用除非这个.cpp包含这个.h文件） <br>例： <br>// 1.h <br>#include &lt;iostream&gt; <br>void print() <br>{ <br>std::cout &lt;&lt; "hello!" &lt;&lt; std::endl; <br>} <br>// 2.cpp <br>#include &lt;iostream&gt; <br>using namespace std; <br>// 以上两句在这个例子中可以不要 <br>extern void print(); <br>int main () <br>{ <br>print(); <br>} <br>就会出错因为1.h中的void print()；在不包含它的文件中是不可调用的，即使在声明了extern 也于事无补，如果你将这个例子中的1.h名字换成1.cpp就对了！ <br>从这些可以看出来，extern在这里起的作用是告诉编译器，你这个print()已经在某个.cpp中已经定义了，这里只不过是声明一下有这个东西，然后拿来用一下。定义只能出现一次，声明却可出现多次，也就是说extern声明可在多个文件中用（包括.h) <br>还有，你还可以屏蔽extern声明，如第二个例子中的第二个.cpp文件可以改成 <br>#include &lt;iostream&gt; <br>using namespace std; <br>// 这里以上两句不能省略，因为，这里extern void print();函数已经不起作用了，在这里调用的而是本文件中定义的void print()函数，其中用到了cout,endl;他们来源于std::&lt;iostream&gt; <br>extern void print(); <br>void print() <br>{ <br>cout &lt;&lt; "world!" &lt;&lt; endl; <br>} <br><br>int main () <br>{ <br>print(); <br>} <br>// 输出结果为world! <br>还有一个extern "C"就不用说了，用这个可以允许C++程序中调用C的函数！ <br><br>
<img src ="http://www.cnitblog.com/lenatem/aggbug/62880.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lenatem/" target="_blank">雅量</a> 2009-11-27 21:37 <a href="http://www.cnitblog.com/lenatem/archive/2009/11/27/62880.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>atexit函数</title><link>http://www.cnitblog.com/lenatem/archive/2009/07/01/59752.html</link><dc:creator>雅量</dc:creator><author>雅量</author><pubDate>Wed, 01 Jul 2009 02:21:00 GMT</pubDate><guid>http://www.cnitblog.com/lenatem/archive/2009/07/01/59752.html</guid><wfw:comment>http://www.cnitblog.com/lenatem/comments/59752.html</wfw:comment><comments>http://www.cnitblog.com/lenatem/archive/2009/07/01/59752.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lenatem/comments/commentRss/59752.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lenatem/services/trackbacks/59752.html</trackback:ping><description><![CDATA[<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;很多时候我们需要在程序退出的时候做一些诸如释放资源的操作，但程序退出的方式有很多种，比如main()函数运行结束、在程序的某个地方用exit() 结束程序、用户通过Ctrl+C或Ctrl+break操作来终止程序等等，因此需要有一种与程序退出方式无关的方法来进行程序退出时的必要处理。方法就是用atexit()函数来注册程序正常终止时要被调用的函数。 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; atexit()函数的参数是一个函数指针，函数指针指向一个没有参数也没有返回值的函数。atexit()的函数原型是：int atexit (void (*)(void));<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在一个程序中最多可以用atexit()注册32个处理函数，这些处理函数的调用顺序与其注册的顺序相反，也即最先注册的最后调用，最后注册的最先调用。<br></p>
<p>下面是一段代码示例<br></p>
<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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdlib.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</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 src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;fn4(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">),fn1(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">),fn3(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">),fn2(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_102_218_Open_Image onclick="this.style.display='none'; Codehighlighter1_102_218_Open_Text.style.display='none'; Codehighlighter1_102_218_Closed_Image.style.display='inline'; Codehighlighter1_102_218_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_102_218_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_102_218_Closed_Text.style.display='none'; Codehighlighter1_102_218_Open_Image.style.display='inline'; Codehighlighter1_102_218_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_102_218_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_102_218_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;atexit(fn2);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;atexit(fn1);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;atexit(fn3);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;atexit(fn4);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">this&nbsp;is&nbsp;main&nbsp;function\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;system(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">pause</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;fn1()<br><img id=Codehighlighter1_232_275_Open_Image onclick="this.style.display='none'; Codehighlighter1_232_275_Open_Text.style.display='none'; Codehighlighter1_232_275_Closed_Image.style.display='inline'; Codehighlighter1_232_275_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_232_275_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_232_275_Closed_Text.style.display='none'; Codehighlighter1_232_275_Open_Image.style.display='inline'; Codehighlighter1_232_275_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_232_275_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_232_275_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">exe&nbsp;after&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;system(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">pause</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;fn2()<br><img id=Codehighlighter1_289_337_Open_Image onclick="this.style.display='none'; Codehighlighter1_289_337_Open_Text.style.display='none'; Codehighlighter1_289_337_Closed_Image.style.display='inline'; Codehighlighter1_289_337_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_289_337_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_289_337_Closed_Text.style.display='none'; Codehighlighter1_289_337_Open_Image.style.display='inline'; Codehighlighter1_289_337_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_289_337_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_289_337_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">main&nbsp;function</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;system(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">pause</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;fn3()<br><img id=Codehighlighter1_352_393_Open_Image onclick="this.style.display='none'; Codehighlighter1_352_393_Open_Text.style.display='none'; Codehighlighter1_352_393_Closed_Image.style.display='inline'; Codehighlighter1_352_393_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_352_393_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_352_393_Closed_Text.style.display='none'; Codehighlighter1_352_393_Open_Image.style.display='inline'; Codehighlighter1_352_393_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_352_393_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_352_393_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">hello\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;system(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">pause</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;fn4()<br><img id=Codehighlighter1_407_445_Open_Image onclick="this.style.display='none'; Codehighlighter1_407_445_Open_Text.style.display='none'; Codehighlighter1_407_445_Closed_Image.style.display='inline'; Codehighlighter1_407_445_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_407_445_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_407_445_Closed_Text.style.display='none'; Codehighlighter1_407_445_Open_Image.style.display='inline'; Codehighlighter1_407_445_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_407_445_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_407_445_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">hi\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;system(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">pause</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br>执行结果为：<br><img height=154 alt="" src="http://www.cnitblog.com/images/cnitblog_com/lenatem/atexit.jpg" width=277 border=0>
<img src ="http://www.cnitblog.com/lenatem/aggbug/59752.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lenatem/" target="_blank">雅量</a> 2009-07-01 10:21 <a href="http://www.cnitblog.com/lenatem/archive/2009/07/01/59752.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c++学习书籍推荐</title><link>http://www.cnitblog.com/lenatem/archive/2009/06/07/59117.html</link><dc:creator>雅量</dc:creator><author>雅量</author><pubDate>Sun, 07 Jun 2009 12:48:00 GMT</pubDate><guid>http://www.cnitblog.com/lenatem/archive/2009/06/07/59117.html</guid><wfw:comment>http://www.cnitblog.com/lenatem/comments/59117.html</wfw:comment><comments>http://www.cnitblog.com/lenatem/archive/2009/06/07/59117.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lenatem/comments/commentRss/59117.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lenatem/services/trackbacks/59117.html</trackback:ping><description><![CDATA[转自西交BBS<br><br>第一篇 <br><br>一些同学问我，如何学好C++，我没有别的办法给你们，唯一的办法就是读书，读大 <br>量的书，就可以解决。要把C++作为日常语言，而不是一种程序语言，这样就好办了。 <br><br>有人又要问我，那么我应该读什么书才好？没有时间怎么办？ <br><br>我只能对你们说，没时间的话，就别学C++了，做你们喜欢做的事。生活中没有 <br>C++，也同样美好。 <br><br>如果你准备学，一定要学好，那么我开个书单，应该问题不是甚大。 <br><br>首先肯定要读一读Bjarne Stroustrup的The Design and Evolution of C++，了解 <br>一下这个语言的历史。接下来就可以看别的书了，但要不停地回头看这本书，看到 <br>你不断地学到的新技术是怎么样一点点地被接纳到这个语言中去的。 <br><br>第一本书因人而异，基础好一些的，可以看Stanley B. Lippman的C++ Primer，这 <br>本书非常地巨大，你打星号的部分可以不要看。基础不太好的，可以看Stanley B. <br>Lippman的Essential C++，这本书份量要轻得多，不过四个C++的范型都讲了，而 <br>且讲得非常清楚。 <br><br>第二本应该停止技术层面的东西，静下心来看看Pike和Kernighan的The Practice <br>of Programming，好好地整理一下，在程序设计中应该有哪些注意的事项。这本 <br>非常薄的booklet，可以说是程序员必读的指南。 <br><br>第三本书，就应该是Bruce Eckel写的、候捷译的Thinking in C++，这本书每过 <br>半年我就要重读一遍。可以说每一章都是写得发人深省的，这本书让我感觉到了 <br>技术运用的非常高的境界，但是语言非常平实，只要认真地读，即使基础不行， <br>也一定可以懂。我在教课的时候，就是用这本书（面对的学生是零基础）。 <br><br>要更上一层的话，就要慢一步，先要把握C++设计习惯的良好。这是Scott <br>Meyers的Effective C++和More Effective C++带给我们的无尽收益。我More <br>Effective C++买不起，只好花了10块钱复印装订了一本"线装本"，看起来像葵花 <br>宝典（;-)）。这两本书是真正的经典，作者对C++的纯熟，使得语言的风格读起来 <br>简直是如饴甘甜，就像他站在对面在讲课。我手中有这两本书的原版CD，如果有兴 <br>趣，可以发E-mail到sjtu@263.net或在饮水思源投条儿给gaobo索要，只要您提供 <br>光盘我就给免费烧。如果你已经深刻地理解了Effective C++和More Effective <br>C++，那你可以发现，你在众人中已经是鸡群之鹤。可以指导项目运作了，可以编 <br>写一切你想做的程序了，可以指出别人看起来不错的代码的大小问题了。如果你能 <br>一眼看出有人的代码是对应于"条款27"或"条款M6"，那你可真是让本人刮目了。 <br><br>我已经讲了，如果要写程序，EC++和MEC++的境界已经足以使你自如应付，可是如 <br>果你还不满足，想关注一些理论层面的问题，或是想看看实现的代码，你就不应该 <br>错过这几本好极了的书。我是说Herb Sutter的Exceptional C++和More <br>Exceptional C++，这两本书的难度是非常大的，我对每一条的阅读笔记都是十多 <br>页。特别是泛型程序设计的部分，这两本书旁征博引，极尽深入探讨之能事，每每 <br>看懂一条，都抹汗一次，大感酣畅淋漓；还有侯捷的　STL源码剖析　，以实际的 <br>例子一点点地讲解一个STL是怎么样实现的，我是刚开始读，不发表评论；而 <br>Stanley B. Lippman，Cfront的实现者之一，执笔写出Inside the C++ Object <br>Model，我只有一个字，就是基本帅呆了。我从中了解了无数的编译器解释源代码 <br>的细节，以及记忆体分配的细节，呵呵，这些都知道了，我还怕什么呢？最近得到 <br>了另一Cfront实现者、C++标准委员会Koenig的　C++沉思录，看起来非常不错，这 <br>里也推荐给大家，但我也没看完，亦无发言权。 <br><br>最后最后，你们，未来的C++理论家们，可要记住，Bjarne Stroustrup的The C++ <br>Programming Language无论如何也应该读个四五遍！这是一切C++的书本的源泉。 <br>如果还觉得不够，就向C++标准委员会订购一本C++标准。 <br><br>一切中国大陆作者的书，一概不要看（包括我的）。一切VC++或讲特定的编译器的 <br>书，一概不要看。如果需要补C语言的课，买一本非常小的K&amp;R的The C <br>Programming Language足矣，其它的书一概不要看。不要先学C，再学C++，而要直 <br>接学C++。你不是先学古文，再学白话的，对不对？所以相信我，直接来更容易。 <br><br>以上文字，皆为原创，本人愿意为每个字负责。 <br><br>第二篇 <br><br>好久未来Ｃ板了，原因这段时间一直在研究两本书，看得自己不敢多说一句话。 <br><br>１、《Effective STL》 <br>订购：<a href="http://www.cnforyou.com/query/bookdetail.asp?viBookCode=8537" target=_blank><u><font color=#0000ff>http://www.cnforyou.com/query/bookdetail.asp?viBookCode=8537</font></u></a> <br>作者：Scott Meyers <br>出版社：中国电力出版社 <br>　　一开始欺负这本书比较薄，想快点看完，但不久就发现自己已经翻不动了。直 <br>到看完最后一个字，才发现一个基本的事实：薄的不是这本书，而是自己的见识。 <br>　　有关STL的书也读了不少，正如读《Effective C++》以前，有关C++的书也读了 <br>不少。Meyers的书总是给人一种脱胎换骨的提升感觉，他总能在大家以为老生常谈 <br>的地方挖出意想不到的新意，并指出一些一般人习以为常的东西其实存在种种危机， <br>或是在一些看来完全等价的选择中，为特定的场合选择最有效的（Most <br>Effective）那一种。而且他的切入口总是让人看得懂的（不像Stroustrup的书， <br>第一句话就要琢磨半天），但是他总是会选择几个拓展点，并把它们分析得淋漓尽 <br>致，这时候就需要一段代码一段代码甚至是语句粒度地阅读了——当然，最后总是 <br>看得懂，这和读者的阅读程度总是正比，这会给人极大的成就感。可以说，在STL <br>实践的书籍，无书可出其右（当然在STL实作方面，我还是要向大家推荐侯捷的 <br>《STL源码剖析》）。 <br>　　读完这本书后，和Pascal就产生明显的距离感了。这里我仍然要说：请热爱 <br>Delphi！我还是更愿意写&#8220;var s:set of char;&#8221;而不是 <br>&#8220;set &lt;char*, less&lt;char*&gt;, allocator&lt;char*&gt; &gt; s&#8221;，;-)。 <br><br>２、《Modern C++ Design》 <br>订购（中文）：<a href="http://www.cnforyou.com/query/bookdetail.asp?viBookCode=8184" target=_blank><u><font color=#0000ff>http://www.cnforyou.com/query/bookdetail.asp?viBookCode=8184</font></u></a> <br>订购（影印）：<a href="http://www.cnforyou.com/query/bookdetail.asp?viBookCode=8319" target=_blank><u><font color=#0000ff>http://www.cnforyou.com/query/bookdetail.asp?viBookCode=8319</font></u></a> <br>作者：Andrei Alexandrescu <br>译者：侯捷、於春景 <br>出版社：华中科技大学出版社（中文） <br>　　　　中国电力出版社（影印） <br>　　读完这本书的第一页，我就知道自己放不下它了，但我也知道，我的苦难经历 <br>又要多上一笔了。用C++实作设计模式，已经是骨灰级的难度，但这本书明显还在讲 <br>一个template的对象模型的问题，这在我读《Inside the C++ Object Model》时是 <br>屡攻不下的难点。不过，出乎意料的是这本书居然使我具有一些概念了，而且动手写 <br>出了一个SmartPointer。 <br>　　这本书我还远不能说我读懂了，但是确乎是读完了。如果你还没有读过对象模型 <br>和设计模式的书，我认为需要读一读。否则，直接看这本书根本就是受罪。最近，有 <br>一些朋友也注意到设计模式的重要性了，可能从明年起我在《电脑报》上要发表一些 <br>文章，届时请朋友们指教吧。 <br><br>另外就是Effective C++点评继续写，我现在觉得更惶恐，但是信心也更足了。 <br>-- <br><br><br>-- <br>订购（中文）：<a href="http://www.cnforyou.com/query/bookdetail.asp?viBookCode=8184" target=_blank><u><font color=#0000ff>http://www.cnforyou.com/query/bookdetail.asp?viBookCode=8184</font></u></a> <br>订购（影印）：<a href="http://www.cnforyou.com/query/bookdetail.asp?viBookCode=8319" target=_blank><u><font color=#0000ff>http://www.cnforyou.com/query/bookdetail.asp?viBookCode=8319</font></u></a> <br>作者：Andrei Alexandrescu <br>译者：侯捷、於春景 <br>出版社：华中科技大学出版社（中文） <br>　　　　中国电力出版社（影印） <br>　　读完这本书的第一页，我就知道自己放不下它了，但我也知道，我的苦难经历 <br>又要多上一笔了。用C++实作设计模式，已经是骨灰级的难度，但这本书明显还在讲 <br>一个template的对象模型的问题，这在我读《Inside the C++ Object Model》时是 <br>屡攻不下的难点。不过，出乎意料的是这本书居然使我具有一些概念了，而且动手写 <br>出了一个SmartPointer。 <br>　　这本书我还远不能说我读懂了，但是确乎是读完了。如果你还没有读过对象模型 <br>和设计模式的书，我认为需要读一读。否则，直接看这本书根本就是受罪。最近，有 <br>一些朋友也注意到设计模式的重要性了，可能从明年起我在《电脑报》上要发表一些 <br>文章，届时请朋友们指教吧。 <br><br>另外就是Effective C++点评继续写，我现在觉得更惶恐，但是信心也更足了。
<img src ="http://www.cnitblog.com/lenatem/aggbug/59117.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lenatem/" target="_blank">雅量</a> 2009-06-07 20:48 <a href="http://www.cnitblog.com/lenatem/archive/2009/06/07/59117.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用ifstream和getline读取文件内容</title><link>http://www.cnitblog.com/lenatem/archive/2008/12/23/52959.html</link><dc:creator>雅量</dc:creator><author>雅量</author><pubDate>Tue, 23 Dec 2008 07:49:00 GMT</pubDate><guid>http://www.cnitblog.com/lenatem/archive/2008/12/23/52959.html</guid><wfw:comment>http://www.cnitblog.com/lenatem/comments/52959.html</wfw:comment><comments>http://www.cnitblog.com/lenatem/archive/2008/12/23/52959.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lenatem/comments/commentRss/52959.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lenatem/services/trackbacks/52959.html</trackback:ping><description><![CDATA[摘自：<a href="http://www.cnblogs.com/JCSU/archive/2008/12/09/1190685.html">http://www.cnblogs.com/JCSU/archive/2008/12/09/1190685.html</a><br><br>假设有一个叫 <strong>data.txt</strong> 的文件, 它包含以下内容: <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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">Fry:&nbsp;One&nbsp;Jillion&nbsp;dollars.<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>[Everyone&nbsp;gasps.]<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>Auctioneer:&nbsp;Sir,&nbsp;that's&nbsp;not&nbsp;a&nbsp;number.<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>数据读取，&nbsp;测试&nbsp;。</span></div>
以下就是基于 data.txt 的数据读取操作:<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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">fstream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">输出空行</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;OutPutAnEmptyLine()<br><img id=Codehighlighter1_112_131_Open_Image onclick="this.style.display='none'; Codehighlighter1_112_131_Open_Text.style.display='none'; Codehighlighter1_112_131_Closed_Image.style.display='inline'; Codehighlighter1_112_131_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_112_131_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_112_131_Closed_Text.style.display='none'; Codehighlighter1_112_131_Open_Image.style.display='inline'; Codehighlighter1_112_131_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_112_131_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_112_131_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.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">\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">读取方式:&nbsp;逐词读取,&nbsp;词之间用空格区分<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">read&nbsp;data&nbsp;from&nbsp;the&nbsp;file,&nbsp;Word&nbsp;By&nbsp;Word<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">when&nbsp;used&nbsp;in&nbsp;this&nbsp;manner,&nbsp;we'll&nbsp;get&nbsp;space-delimited&nbsp;bits&nbsp;of&nbsp;text&nbsp;from&nbsp;the&nbsp;file<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">but&nbsp;all&nbsp;of&nbsp;the&nbsp;whitespace&nbsp;that&nbsp;separated&nbsp;words&nbsp;(including&nbsp;newlines)&nbsp;was&nbsp;lost.&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;ReadDataFromFileWBW()<br><img id=Codehighlighter1_386_526_Open_Image onclick="this.style.display='none'; Codehighlighter1_386_526_Open_Text.style.display='none'; Codehighlighter1_386_526_Closed_Image.style.display='inline'; Codehighlighter1_386_526_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_386_526_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_386_526_Closed_Text.style.display='none'; Codehighlighter1_386_526_Open_Image.style.display='inline'; Codehighlighter1_386_526_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_386_526_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_386_526_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ifstream&nbsp;fin(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">data.txt</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;s;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(&nbsp;fin&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;s&nbsp;)&nbsp;<br><img id=Codehighlighter1_463_524_Open_Image onclick="this.style.display='none'; Codehighlighter1_463_524_Open_Text.style.display='none'; Codehighlighter1_463_524_Closed_Image.style.display='inline'; Codehighlighter1_463_524_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_463_524_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_463_524_Closed_Text.style.display='none'; Codehighlighter1_463_524_Open_Image.style.display='inline'; Codehighlighter1_463_524_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_463_524_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_463_524_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Read&nbsp;from&nbsp;file:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;s&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">读取方式:&nbsp;逐行读取,&nbsp;将行读入字符数组,&nbsp;行之间用回车换行区分<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">If&nbsp;we&nbsp;were&nbsp;interested&nbsp;in&nbsp;preserving&nbsp;whitespace,&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">we&nbsp;could&nbsp;read&nbsp;the&nbsp;file&nbsp;in&nbsp;Line-By-Line&nbsp;using&nbsp;the&nbsp;I/O&nbsp;getline()&nbsp;function.</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;ReadDataFromFileLBLIntoCharArray()<br><img id=Codehighlighter1_730_935_Open_Image onclick="this.style.display='none'; Codehighlighter1_730_935_Open_Text.style.display='none'; Codehighlighter1_730_935_Closed_Image.style.display='inline'; Codehighlighter1_730_935_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_730_935_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_730_935_Closed_Text.style.display='none'; Codehighlighter1_730_935_Open_Image.style.display='inline'; Codehighlighter1_730_935_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_730_935_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_730_935_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ifstream&nbsp;fin(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">data.txt</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;LINE_LENGTH&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;str[LINE_LENGTH];&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(&nbsp;fin.getline(str,LINE_LENGTH)&nbsp;)<br><img id=Codehighlighter1_872_933_Open_Image onclick="this.style.display='none'; Codehighlighter1_872_933_Open_Text.style.display='none'; Codehighlighter1_872_933_Closed_Image.style.display='inline'; Codehighlighter1_872_933_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_872_933_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_872_933_Closed_Text.style.display='none'; Codehighlighter1_872_933_Open_Image.style.display='inline'; Codehighlighter1_872_933_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_872_933_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_872_933_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Read&nbsp;from&nbsp;file:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;str&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">读取方式:&nbsp;逐行读取,&nbsp;将行读入字符串,&nbsp;行之间用回车换行区分<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">If&nbsp;you&nbsp;want&nbsp;to&nbsp;avoid&nbsp;reading&nbsp;into&nbsp;character&nbsp;arrays,&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">you&nbsp;can&nbsp;use&nbsp;the&nbsp;C++&nbsp;string&nbsp;getline()&nbsp;function&nbsp;to&nbsp;read&nbsp;lines&nbsp;into&nbsp;strings</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;ReadDataFromFileLBLIntoString()<br><img id=Codehighlighter1_1139_1283_Open_Image onclick="this.style.display='none'; Codehighlighter1_1139_1283_Open_Text.style.display='none'; Codehighlighter1_1139_1283_Closed_Image.style.display='inline'; Codehighlighter1_1139_1283_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_1139_1283_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1139_1283_Closed_Text.style.display='none'; Codehighlighter1_1139_1283_Open_Image.style.display='inline'; Codehighlighter1_1139_1283_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_1139_1283_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1139_1283_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ifstream&nbsp;fin(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">data.txt</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;s;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(&nbsp;getline(fin,s)&nbsp;)<br><img id=Codehighlighter1_1221_1281_Open_Image onclick="this.style.display='none'; Codehighlighter1_1221_1281_Open_Text.style.display='none'; Codehighlighter1_1221_1281_Closed_Image.style.display='inline'; Codehighlighter1_1221_1281_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1221_1281_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1221_1281_Closed_Text.style.display='none'; Codehighlighter1_1221_1281_Open_Image.style.display='inline'; Codehighlighter1_1221_1281_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1221_1281_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1221_1281_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Read&nbsp;from&nbsp;file:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;s&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">带错误检测的读取方式<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">Simply&nbsp;evaluating&nbsp;an&nbsp;I/O&nbsp;object&nbsp;in&nbsp;a&nbsp;boolean&nbsp;context&nbsp;will&nbsp;return&nbsp;false&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">if&nbsp;any&nbsp;errors&nbsp;have&nbsp;occurred</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;ReadDataWithErrChecking()<br><img id=Codehighlighter1_1434_1640_Open_Image onclick="this.style.display='none'; Codehighlighter1_1434_1640_Open_Text.style.display='none'; Codehighlighter1_1434_1640_Closed_Image.style.display='inline'; Codehighlighter1_1434_1640_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_1434_1640_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1434_1640_Closed_Text.style.display='none'; Codehighlighter1_1434_1640_Open_Image.style.display='inline'; Codehighlighter1_1434_1640_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_1434_1640_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1434_1640_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;filename&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">dataFUNNY.txt</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ifstream&nbsp;fin(&nbsp;filename.c_str());&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(&nbsp;</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">fin&nbsp;)&nbsp;<br><img id=Codehighlighter1_1536_1638_Open_Image onclick="this.style.display='none'; Codehighlighter1_1536_1638_Open_Text.style.display='none'; Codehighlighter1_1536_1638_Closed_Image.style.display='inline'; Codehighlighter1_1536_1638_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_1536_1638_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1536_1638_Closed_Text.style.display='none'; Codehighlighter1_1536_1638_Open_Image.style.display='inline'; Codehighlighter1_1536_1638_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_1536_1638_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1536_1638_Open_Text><span style="COLOR: #000000">{&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Error&nbsp;opening&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;filename&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;for&nbsp;input</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_1654_1945_Open_Image onclick="this.style.display='none'; Codehighlighter1_1654_1945_Open_Text.style.display='none'; Codehighlighter1_1654_1945_Closed_Image.style.display='inline'; Codehighlighter1_1654_1945_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_1654_1945_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_1654_1945_Closed_Text.style.display='none'; Codehighlighter1_1654_1945_Open_Image.style.display='inline'; Codehighlighter1_1654_1945_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_1654_1945_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_1654_1945_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ReadDataFromFileWBW();&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">逐词读入字符串&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;OutPutAnEmptyLine();&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">输出空行</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ReadDataFromFileLBLIntoCharArray();&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">逐词读入字符数组</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;OutPutAnEmptyLine();&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">输出空行</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ReadDataFromFileLBLIntoString();&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">逐词读入字符串</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;OutPutAnEmptyLine();&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">输出空行</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;ReadDataWithErrChecking();&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">带检测的读取</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&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.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<strong>输出结果为:<br></strong><font face=Verdana>Read from file: Fry:<br>Read from file: One<br>Read from file: Jillion<br>Read from file: dollars.<br>Read from file: [Everyone<br>Read from file: gasps.]<br>Read from file: Auctioneer:<br>Read from file: Sir,<br>Read from file: that's<br>Read from file: not<br>Read from file: a<br>Read from file: number.<br>Read from file: 数据读取，<br>Read from file: 测试<br>Read from file: 。</font> <br><br><font face=Verdana>Read from file: Fry: One Jillion dollars.<br>Read from file: [Everyone gasps.]<br>Read from file: Auctioneer: Sir, that's not a number.<br>Read from file: 数据读取， 测试 。<br><br></font><font face=Verdana>Read from file: Fry: One Jillion dollars.<br>Read from file: [Everyone gasps.]<br>Read from file: Auctioneer: Sir, that's not a number.<br>Read from file: 数据读取， 测试 。<br><br></font><font face=Verdana><font face=Verdana>Error opening&nbsp; dataFUNNY.txt for input</font><br>Press any key to continue</font> 
<img src ="http://www.cnitblog.com/lenatem/aggbug/52959.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lenatem/" target="_blank">雅量</a> 2008-12-23 15:49 <a href="http://www.cnitblog.com/lenatem/archive/2008/12/23/52959.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>getopt</title><link>http://www.cnitblog.com/lenatem/archive/2008/12/12/52552.html</link><dc:creator>雅量</dc:creator><author>雅量</author><pubDate>Fri, 12 Dec 2008 02:00:00 GMT</pubDate><guid>http://www.cnitblog.com/lenatem/archive/2008/12/12/52552.html</guid><description><![CDATA[<div class=t_msgfont id=message5678584>getopt（分析命令行参数）&nbsp;&nbsp;<br>相关函数&nbsp;&nbsp;<br><br>表头文件&nbsp;&nbsp;#include&lt;unistd.h&gt;<br><br>定义函数&nbsp;&nbsp;int getopt(int argc,char * const argv[ ],const char * optstring);<br><br>函数说明&nbsp;&nbsp;getopt()用来分析命令行参数。参数argc和argv是由main()传递的参数个数和内容。参数optstring 则代表欲处理的选项字符串。此函数会返回在argv 中下一个的选项字母，此字母会对应参数optstring 中的字母。如果选项字符串里的字母后接着冒号&#8220;:&#8221;，则表示还有相关的参数，全域变量optarg 即会指向此额外参数。如果getopt()找不到符合的参数则会印出错信息，并将全域变量optopt设为&#8220;?&#8221;字符，如果不希望getopt()印出错信息，则只要将全域变量opterr设为0即可。<br><br>返回值&nbsp;&nbsp;如果找到符合的参数则返回此参数字母，如果参数不包含在参数optstring 的选项字母则返回&#8220;?&#8221;字符，分析结束则返回-1。<br><br>范例&nbsp;<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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">&nbsp;#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 src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">unistd.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;argc,</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">**</span><span style="COLOR: #000000">argv)<br><img id=Codehighlighter1_69_322_Open_Image onclick="this.style.display='none'; Codehighlighter1_69_322_Open_Text.style.display='none'; Codehighlighter1_69_322_Closed_Image.style.display='inline'; Codehighlighter1_69_322_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_69_322_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_69_322_Closed_Text.style.display='none'; Codehighlighter1_69_322_Open_Image.style.display='inline'; Codehighlighter1_69_322_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_69_322_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_69_322_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;ch;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>opterr&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">((ch&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;getopt(argc,argv,&#8221;a:bcde&#8221;))</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">switch</span><span style="COLOR: #000000">(ch)<br><img id=Codehighlighter1_148_288_Open_Image onclick="this.style.display='none'; Codehighlighter1_148_288_Open_Text.style.display='none'; Codehighlighter1_148_288_Closed_Image.style.display='inline'; Codehighlighter1_148_288_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_148_288_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_148_288_Closed_Text.style.display='none'; Codehighlighter1_148_288_Open_Image.style.display='inline'; Codehighlighter1_148_288_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top></span><span id=Codehighlighter1_148_288_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_148_288_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;&#8216;a&#8217;:<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>printf(&#8220;option&nbsp;a:&#8217;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">s&#8217;\n&#8221;,optarg);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">case</span><span style="COLOR: #000000">&nbsp;&#8216;b&#8217;:<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>printf(&#8220;option&nbsp;b&nbsp;:b\n&#8221;);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">default</span><span style="COLOR: #000000">:<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>printf(&#8220;other&nbsp;option&nbsp;:</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">c\n&#8221;,ch);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>printf(&#8220;optopt&nbsp;</span><span style="COLOR: #000000">+%</span><span style="COLOR: #000000">c\n&#8221;,optopt);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<br>执行&nbsp;&nbsp;$./getopt &#8211;b<br>option b:b<br>$./getopt &#8211;c<br>other option:c<br>$./getopt &#8211;a<br>other option <img alt="" src="http://bbs.chinaunix.net/images/smilies/icon_confused.gif" border=0 smilieid="41"><br>$./getopt &#8211;a12345<br>option a:&#8217;12345&#8217;</div>
<img src ="http://www.cnitblog.com/lenatem/aggbug/52552.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lenatem/" target="_blank">雅量</a> 2008-12-12 10:00 <a href="http://www.cnitblog.com/lenatem/archive/2008/12/12/52552.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ primer学习笔记（四）---语句（1）</title><link>http://www.cnitblog.com/lenatem/archive/2008/12/04/52208.html</link><dc:creator>雅量</dc:creator><author>雅量</author><pubDate>Thu, 04 Dec 2008 13:31:00 GMT</pubDate><guid>http://www.cnitblog.com/lenatem/archive/2008/12/04/52208.html</guid><wfw:comment>http://www.cnitblog.com/lenatem/comments/52208.html</wfw:comment><comments>http://www.cnitblog.com/lenatem/archive/2008/12/04/52208.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lenatem/comments/commentRss/52208.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lenatem/services/trackbacks/52208.html</trackback:ping><description><![CDATA[1.编程实现统计输入的空格数和制表符的个数<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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_35_383_Open_Image onclick="this.style.display='none'; Codehighlighter1_35_383_Open_Text.style.display='none'; Codehighlighter1_35_383_Closed_Image.style.display='inline'; Codehighlighter1_35_383_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_35_383_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_35_383_Closed_Text.style.display='none'; Codehighlighter1_35_383_Open_Image.style.display='inline'; Codehighlighter1_35_383_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_35_383_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_35_383_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;a;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;aCout</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;bCout</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;otherCout</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(cin.</span><span style="COLOR: #0000ff">get</span><span style="COLOR: #000000">(a))<br><img id=Codehighlighter1_112_233_Open_Image onclick="this.style.display='none'; Codehighlighter1_112_233_Open_Text.style.display='none'; Codehighlighter1_112_233_Closed_Image.style.display='inline'; Codehighlighter1_112_233_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_112_233_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_112_233_Closed_Text.style.display='none'; Codehighlighter1_112_233_Open_Image.style.display='inline'; Codehighlighter1_112_233_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_112_233_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_112_233_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">switch</span><span style="COLOR: #000000">(a)<br><img id=Codehighlighter1_128_230_Open_Image onclick="this.style.display='none'; Codehighlighter1_128_230_Open_Text.style.display='none'; Codehighlighter1_128_230_Closed_Image.style.display='inline'; Codehighlighter1_128_230_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_128_230_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_128_230_Closed_Text.style.display='none'; Codehighlighter1_128_230_Open_Image.style.display='inline'; Codehighlighter1_128_230_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_128_230_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_128_230_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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">'</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">:<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;aCout</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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 src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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">'</span><span style="COLOR: #000000">\t</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">:<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;bCout</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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 src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">default</span><span style="COLOR: #000000">:<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;otherCout</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.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">the&nbsp;num&nbsp;of&nbsp;space&nbsp;is&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">aCout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.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">the&nbsp;num&nbsp;of&nbsp;tab&nbsp;is&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">bCout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.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">the&nbsp;num&nbsp;of&nbsp;other&nbsp;character&nbsp;is&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">otherCout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br><span style="COLOR: red"><strong>PS：此处读入数据时不能用提取操作符（&gt;&gt;），因为对&gt;&gt;而言，空格、制表符和换行符均为数据项分隔符，会被忽略，而cin对象的get成员函数则不会这样。</strong></span>
<img src ="http://www.cnitblog.com/lenatem/aggbug/52208.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lenatem/" target="_blank">雅量</a> 2008-12-04 21:31 <a href="http://www.cnitblog.com/lenatem/archive/2008/12/04/52208.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ primer学习笔记（三）---数组和指针(3) </title><link>http://www.cnitblog.com/lenatem/archive/2008/11/12/51369.html</link><dc:creator>雅量</dc:creator><author>雅量</author><pubDate>Wed, 12 Nov 2008 08:01:00 GMT</pubDate><guid>http://www.cnitblog.com/lenatem/archive/2008/11/12/51369.html</guid><wfw:comment>http://www.cnitblog.com/lenatem/comments/51369.html</wfw:comment><comments>http://www.cnitblog.com/lenatem/archive/2008/11/12/51369.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lenatem/comments/commentRss/51369.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lenatem/services/trackbacks/51369.html</trackback:ping><description><![CDATA[<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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #008000">//</span><span style="COLOR: #008000">读入一组string类型的数据，并将它们存储在vector中。接着，把该vector对象复制到一个字符指针数组。为vector的每一个元素创建一个新的字符数组，并把该vector元素的数据复制到相应的字符数组中，最后把指向该数组的指针插入到字符指针数组。并输出vector对象和数组的内容。</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">#include&nbsp;</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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">vector</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_239_975_Open_Image onclick="this.style.display='none'; Codehighlighter1_239_975_Open_Text.style.display='none'; Codehighlighter1_239_975_Closed_Image.style.display='inline'; Codehighlighter1_239_975_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_239_975_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_239_975_Closed_Text.style.display='none'; Codehighlighter1_239_975_Open_Image.style.display='inline'; Codehighlighter1_239_975_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_239_975_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_239_975_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;str;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;vector</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;vec;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.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;strings:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">输入vector元素</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(cin</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">str)<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vec.push_back(str);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">创建字符指针数组</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&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">parr</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">*</span><span style="COLOR: #000000">[vec.size()];<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">处理vector元素&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;size_t&nbsp;ix</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(vector</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">::iterator&nbsp;iter</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">vec.begin();iter</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">vec.end();iter</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">,ix</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_520_605_Open_Image onclick="this.style.display='none'; Codehighlighter1_520_605_Open_Text.style.display='none'; Codehighlighter1_520_605_Closed_Image.style.display='inline'; Codehighlighter1_520_605_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_520_605_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_520_605_Closed_Text.style.display='none'; Codehighlighter1_520_605_Open_Image.style.display='inline'; Codehighlighter1_520_605_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_520_605_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_520_605_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&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">p</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">[(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">iter).size()</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strcpy(p,(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">iter).c_str());<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;parr[ix]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">p;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">输出vector对象的内容</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">the&nbsp;conent&nbsp;of&nbsp;vector:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(vector</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">::iterator&nbsp;iter1</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">vec.begin();iter1</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">vec.end();iter1</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;*</span><span style="COLOR: #000000">iter1</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">输出字符数组的内容</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">the&nbsp;conent&nbsp;of&nbsp;array:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(ix</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;ix</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">vec.size();ix</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">parr[ix]</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(ix</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;ix</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">vec.size();ix</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;[]&nbsp;parr[ix];<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;[]&nbsp;parr;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.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.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #008000">//</span><span style="COLOR: #008000">指针用于多维数组</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">#include&nbsp;</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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_84_220_Open_Image onclick="this.style.display='none'; Codehighlighter1_84_220_Open_Text.style.display='none'; Codehighlighter1_84_220_Closed_Image.style.display='inline'; Codehighlighter1_84_220_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_84_220_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_84_220_Closed_Text.style.display='none'; Codehighlighter1_84_220_Open_Image.style.display='inline'; Codehighlighter1_84_220_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_84_220_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_84_220_Open_Text><span style="COLOR: #000000">{<br><img id=Codehighlighter1_101_117_Open_Image onclick="this.style.display='none'; Codehighlighter1_101_117_Open_Text.style.display='none'; Codehighlighter1_101_117_Closed_Image.style.display='inline'; Codehighlighter1_101_117_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_101_117_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_101_117_Closed_Text.style.display='none'; Codehighlighter1_101_117_Open_Image.style.display='inline'; Codehighlighter1_101_117_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;arr[</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">=</span><span id=Codehighlighter1_101_117_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_101_117_Open_Text><span style="COLOR: #000000">{</span><span id=Codehighlighter1_102_108_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_102_108_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #000000">0</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><span style="COLOR: #000000">,</span><span id=Codehighlighter1_110_116_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_110_116_Open_Text><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><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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">];<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(p</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">arr;p</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">arr</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;p</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&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;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">q</span><span style="COLOR: #000000">=*</span><span style="COLOR: #000000">p;q</span><span style="COLOR: #000000">!=*</span><span style="COLOR: #000000">p</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">;q</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;*</span><span style="COLOR: #000000">q</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.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.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<img src ="http://www.cnitblog.com/lenatem/aggbug/51369.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lenatem/" target="_blank">雅量</a> 2008-11-12 16:01 <a href="http://www.cnitblog.com/lenatem/archive/2008/11/12/51369.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ primer学习笔记（三）---数组和指针(2) </title><link>http://www.cnitblog.com/lenatem/archive/2008/11/12/51353.html</link><dc:creator>雅量</dc:creator><author>雅量</author><pubDate>Wed, 12 Nov 2008 02:49:00 GMT</pubDate><guid>http://www.cnitblog.com/lenatem/archive/2008/11/12/51353.html</guid><wfw:comment>http://www.cnitblog.com/lenatem/comments/51353.html</wfw:comment><comments>http://www.cnitblog.com/lenatem/archive/2008/11/12/51353.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lenatem/comments/commentRss/51353.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lenatem/services/trackbacks/51353.html</trackback:ping><description><![CDATA[<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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #008000">//</span><span style="COLOR: #008000">从标准输入设备读入元素建立int型vector对象，然后动态建&nbsp;一个与该vector对象大小一直的数组，把vector对象所有元素赋值给新数据</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">#include&nbsp;</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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">vector</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_165_442_Open_Image onclick="this.style.display='none'; Codehighlighter1_165_442_Open_Text.style.display='none'; Codehighlighter1_165_442_Closed_Image.style.display='inline'; Codehighlighter1_165_442_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_165_442_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_165_442_Closed_Text.style.display='none'; Codehighlighter1_165_442_Open_Image.style.display='inline'; Codehighlighter1_165_442_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_165_442_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_165_442_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;vector</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;vec;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.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">构造vector</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(cin</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">i)<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vec.push_back(i);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;len</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">vec.size();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">(len);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(vector</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">::iterator&nbsp;iter</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">vec.begin();iter</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">vec.end();iter</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">,p</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_380_412_Open_Image onclick="this.style.display='none'; Codehighlighter1_380_412_Open_Text.style.display='none'; Codehighlighter1_380_412_Closed_Image.style.display='inline'; Codehighlighter1_380_412_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_380_412_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_380_412_Closed_Text.style.display='none'; Codehighlighter1_380_412_Open_Image.style.display='inline'; Codehighlighter1_380_412_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_380_412_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_380_412_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p</span><span style="COLOR: #000000">=*</span><span style="COLOR: #000000">iter;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;*</span><span style="COLOR: #000000">p</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;[]&nbsp;p;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.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.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #008000">//</span><span style="COLOR: #008000">连接2个C风格字符串字面值，结果存储在一个C风格字符串中</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstddef</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_124_376_Open_Image onclick="this.style.display='none'; Codehighlighter1_124_376_Open_Text.style.display='none'; Codehighlighter1_124_376_Closed_Image.style.display='inline'; Codehighlighter1_124_376_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_124_376_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_124_376_Closed_Text.style.display='none'; Codehighlighter1_124_376_Open_Image.style.display='inline'; Codehighlighter1_124_376_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_124_376_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_124_376_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">cp1</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">we&nbsp;are&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">cp2</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">best&nbsp;friends!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;size_t&nbsp;len</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">strlen(cp1)</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">strlen(cp2);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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">result_char</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">[len</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">];<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;strcpy(result_char,cp1);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;strcat(result_char,cp2);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">result_char</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;[]&nbsp;result_char;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.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.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #008000">//</span><span style="COLOR: #008000">连接两个string类型字符串，结果存储在另一个string类型</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstddef</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">vector</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_145_252_Open_Image onclick="this.style.display='none'; Codehighlighter1_145_252_Open_Text.style.display='none'; Codehighlighter1_145_252_Closed_Image.style.display='inline'; Codehighlighter1_145_252_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_145_252_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_145_252_Closed_Text.style.display='none'; Codehighlighter1_145_252_Open_Image.style.display='inline'; Codehighlighter1_145_252_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_145_252_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_145_252_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;s1(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">we&nbsp;are&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;s2(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">best&nbsp;friends!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;s3;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;s3</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">s1</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">s2;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">s3</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.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.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<img src ="http://www.cnitblog.com/lenatem/aggbug/51353.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lenatem/" target="_blank">雅量</a> 2008-11-12 10:49 <a href="http://www.cnitblog.com/lenatem/archive/2008/11/12/51353.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ primer学习笔记（三）---数组和指针(1)</title><link>http://www.cnitblog.com/lenatem/archive/2008/11/12/51350.html</link><dc:creator>雅量</dc:creator><author>雅量</author><pubDate>Wed, 12 Nov 2008 02:02:00 GMT</pubDate><guid>http://www.cnitblog.com/lenatem/archive/2008/11/12/51350.html</guid><wfw:comment>http://www.cnitblog.com/lenatem/comments/51350.html</wfw:comment><comments>http://www.cnitblog.com/lenatem/archive/2008/11/12/51350.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lenatem/comments/commentRss/51350.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lenatem/services/trackbacks/51350.html</trackback:ping><description><![CDATA[测试两个数组是否相等<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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstddef</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">vector</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_91_440_Open_Image onclick="this.style.display='none'; Codehighlighter1_91_440_Open_Text.style.display='none'; Codehighlighter1_91_440_Closed_Image.style.display='inline'; Codehighlighter1_91_440_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_91_440_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_91_440_Closed_Text.style.display='none'; Codehighlighter1_91_440_Open_Image.style.display='inline'; Codehighlighter1_91_440_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_91_440_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_91_440_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;size_t&nbsp;array_size</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;size_t&nbsp;i;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;arr1[array_size],arr2[array_size];<br><img src="http://www.cnitblog.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">arr1</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">array_size;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">arr1[i];<br><img src="http://www.cnitblog.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">arr2</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">array_size;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">arr2[i];<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">array_size;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_334_406_Open_Image onclick="this.style.display='none'; Codehighlighter1_334_406_Open_Text.style.display='none'; Codehighlighter1_334_406_Closed_Image.style.display='inline'; Codehighlighter1_334_406_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_334_406_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_334_406_Closed_Text.style.display='none'; Codehighlighter1_334_406_Open_Image.style.display='inline'; Codehighlighter1_334_406_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_334_406_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_334_406_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(arr1[i]</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">arr2[i])<br><img id=Codehighlighter1_361_399_Open_Image onclick="this.style.display='none'; Codehighlighter1_361_399_Open_Text.style.display='none'; Codehighlighter1_361_399_Closed_Image.style.display='inline'; Codehighlighter1_361_399_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_361_399_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_361_399_Closed_Text.style.display='none'; Codehighlighter1_361_399_Open_Image.style.display='inline'; Codehighlighter1_361_399_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_361_399_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_361_399_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&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">!=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.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">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.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.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<br><br>比较2个vector<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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">cstddef</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">vector</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_91_696_Open_Image onclick="this.style.display='none'; Codehighlighter1_91_696_Open_Text.style.display='none'; Codehighlighter1_91_696_Closed_Image.style.display='inline'; Codehighlighter1_91_696_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_91_696_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_91_696_Closed_Text.style.display='none'; Codehighlighter1_91_696_Open_Image.style.display='inline'; Codehighlighter1_91_696_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_91_696_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_91_696_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;vector</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;vec1,&nbsp;vec2;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;vector</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">::iterator&nbsp;iter1,iter2;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;iter1</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">vec1.begin();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;iter2</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">vec2.begin();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</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">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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">1</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_221_255_Open_Image onclick="this.style.display='none'; Codehighlighter1_221_255_Open_Text.style.display='none'; Codehighlighter1_221_255_Closed_Image.style.display='inline'; Codehighlighter1_221_255_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_221_255_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_221_255_Closed_Text.style.display='none'; Codehighlighter1_221_255_Open_Image.style.display='inline'; Codehighlighter1_221_255_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_221_255_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_221_255_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">i;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vec1.push_back(i);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.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;j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(j</span><span style="COLOR: #000000">!=-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_289_323_Open_Image onclick="this.style.display='none'; Codehighlighter1_289_323_Open_Text.style.display='none'; Codehighlighter1_289_323_Closed_Image.style.display='inline'; Codehighlighter1_289_323_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_289_323_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_289_323_Closed_Text.style.display='none'; Codehighlighter1_289_323_Open_Image.style.display='inline'; Codehighlighter1_289_323_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_289_323_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_289_323_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">j;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vec2.push_back(j);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(vec1.size()</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">vec2.size())<br><img id=Codehighlighter1_357_397_Open_Image onclick="this.style.display='none'; Codehighlighter1_357_397_Open_Text.style.display='none'; Codehighlighter1_357_397_Closed_Image.style.display='inline'; Codehighlighter1_357_397_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_357_397_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_357_397_Closed_Text.style.display='none'; Codehighlighter1_357_397_Open_Image.style.display='inline'; Codehighlighter1_357_397_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_357_397_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_357_397_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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">!=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;<br><img id=Codehighlighter1_408_666_Open_Image onclick="this.style.display='none'; Codehighlighter1_408_666_Open_Text.style.display='none'; Codehighlighter1_408_666_Closed_Image.style.display='inline'; Codehighlighter1_408_666_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_408_666_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_408_666_Closed_Text.style.display='none'; Codehighlighter1_408_666_Open_Image.style.display='inline'; Codehighlighter1_408_666_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_408_666_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_408_666_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vector</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">::iterator&nbsp;iter1</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">vec1.begin();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vector</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">::iterator&nbsp;iter2</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">vec2.begin();<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">iter1</span><span style="COLOR: #000000">==*</span><span style="COLOR: #000000">iter2</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">iter1</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">vec1.end()</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">iter2</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">vec2.end())<br><img id=Codehighlighter1_562_590_Open_Image onclick="this.style.display='none'; Codehighlighter1_562_590_Open_Text.style.display='none'; Codehighlighter1_562_590_Closed_Image.style.display='inline'; Codehighlighter1_562_590_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_562_590_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_562_590_Closed_Text.style.display='none'; Codehighlighter1_562_590_Open_Image.style.display='inline'; Codehighlighter1_562_590_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_562_590_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_562_590_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iter1</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;iter2</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(iter1</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">vec1.end())<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&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">==</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&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">!=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.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.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #008000">//</span><span style="COLOR: #008000">比较两个string类型的字符串</span><span style="COLOR: #008000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_92_244_Open_Image onclick="this.style.display='none'; Codehighlighter1_92_244_Open_Text.style.display='none'; Codehighlighter1_92_244_Closed_Image.style.display='inline'; Codehighlighter1_92_244_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_92_244_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_92_244_Closed_Text.style.display='none'; Codehighlighter1_92_244_Open_Image.style.display='inline'; Codehighlighter1_92_244_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_92_244_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_92_244_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;s1,s2;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">s1</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">s2;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">strcmp(s1,s2);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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">&gt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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">&lt;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.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.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<img src ="http://www.cnitblog.com/lenatem/aggbug/51350.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lenatem/" target="_blank">雅量</a> 2008-11-12 10:02 <a href="http://www.cnitblog.com/lenatem/archive/2008/11/12/51350.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ primer学习笔记（二）---变量和基本类型</title><link>http://www.cnitblog.com/lenatem/archive/2008/10/30/50852.html</link><dc:creator>雅量</dc:creator><author>雅量</author><pubDate>Thu, 30 Oct 2008 02:07:00 GMT</pubDate><guid>http://www.cnitblog.com/lenatem/archive/2008/10/30/50852.html</guid><wfw:comment>http://www.cnitblog.com/lenatem/comments/50852.html</wfw:comment><comments>http://www.cnitblog.com/lenatem/archive/2008/10/30/50852.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lenatem/comments/commentRss/50852.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lenatem/services/trackbacks/50852.html</trackback:ping><description><![CDATA[<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(255,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">第二章&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(255,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">变量和基本类型</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(255,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">2</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">.1</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">基本内置类型</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 150%"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">char类型通常是单个机器字节，wchar_t类型用于扩展字符集，比如汉字等。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 150%"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">整型int、short和long都默认为带符号型。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 150%"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">float型只能保证6位有效数字，而double型至少可以保证10位有效数字。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">2</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">.</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">2&nbsp;字面值常量</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; MARGIN-LEFT: 21pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 150%"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">不能在单词中间断开一行，但可以通过使用反斜线符号巧妙实现。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">2.3变量</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(255,0,0); FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(255,0,0); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">C++两种表达方式</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">：</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'"></span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">左值：可以出现在赋值语句的左边或右边</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#8218;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">只能出现在赋值的右边。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">变量名，即变量的标识符，可以由字母、数字和下划线组成，以字母和下划线开头，并且</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(255,0,0); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">区分大小写字母</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(255,0,0); FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(255,0,0); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">C++两种初始化变量的形式</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">：</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'"></span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">复制初始化，语法用等号</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#8218;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">直接初始化，把初始化式放在括号中。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">C++中初始化和赋值是两种不通的操作。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">在函数体外定义的变量都初始化为0，在函数体里定义的内置类型变量不进行自动初始化。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">每个内置类型的对象都要初始化。虽然这么做不总是必需的，但更加容易和安全。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">变量的定义用于为变量分配存储空间，还可以为变量指定初始值。声明用于向程序表明变量的类型和名字。可以通过使用extern关键字声明变量名而不定义它。Extern声明不是定义，也不分配存储空间。事实上，它只是说明变量定义在程序的其他地方。程序中变量可以声明多次，但只能定义一次。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">用来区分名字的不通意义的上下文称为作用域。作用域是程序的一段区域。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">通常把一个对象定义在它首次使用的地方是一个很好的办法。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">2.4&nbsp;const限定符</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">const限定符把一个对象转换成一个常量。在全局作用域声明的const变量是定义该对象的文件的局部变量。此变量只存在于那个文件中，不能被其他文件访问。通过指定const变量为extern，就可以在整个程序中访问const对象。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">2.5&nbsp;引用</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">引用就是对象的另一个名字，主要用作函数的形式参数。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">当引用初始化后，只要该引用存在，它就保持绑定到初始化时指向的对象。不可能将引用绑定到另一个对象。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">将普通的引用绑定到const对象是不合法的。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">2.7&nbsp;枚举</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">默认地，第一个枚举成员赋值是0，后面的每个枚举成员赋值比前面的大1。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">枚举成员值可以是不唯一的。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">不能改变枚举成员的值。枚举成员本身就是一个常量表达式。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">2.8&nbsp;类类型</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; LINE-HEIGHT: 150%; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">如果使用class关键字来定义类，那么定义在第一个访问标号前的任何成员都隐式指定为private;使用struct关键字，这些成员都是public。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<!--endfragment-->
<img src ="http://www.cnitblog.com/lenatem/aggbug/50852.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lenatem/" target="_blank">雅量</a> 2008-10-30 10:07 <a href="http://www.cnitblog.com/lenatem/archive/2008/10/30/50852.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UNIX下C语言编程（一）--进程的生命周期</title><link>http://www.cnitblog.com/lenatem/archive/2008/10/27/50709.html</link><dc:creator>雅量</dc:creator><author>雅量</author><pubDate>Mon, 27 Oct 2008 00:18:00 GMT</pubDate><guid>http://www.cnitblog.com/lenatem/archive/2008/10/27/50709.html</guid><wfw:comment>http://www.cnitblog.com/lenatem/comments/50709.html</wfw:comment><comments>http://www.cnitblog.com/lenatem/archive/2008/10/27/50709.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lenatem/comments/commentRss/50709.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lenatem/services/trackbacks/50709.html</trackback:ping><description><![CDATA[<div class=Section0 style="LAYOUT-GRID:  15.6pt none">
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">进程的创建</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-INDENT: 28pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">在UNIX中，系统调用fork是创建新进程的方法，原型如下：</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-INDENT: 28pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">#include&nbsp;&lt;unistd.h&gt;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-INDENT: 28pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">pid_t&nbsp;fork();</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-INDENT: 28pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">调用fork创建的子进程，将共享父进程的代码空间，复制父进程数据空间，此时子进程会获得父进程的所有变量的一份拷贝。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-INDENT: 28pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">如果fork调用失败，返回-1；如果调用成功，则在父进程中返回子进程的标识号，在子进程中返回0。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(255,0,0); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">实例：</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(255,0,0); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">新程序的执行</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">1.&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">exec函数族</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">v&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">exec函数族用新程序的代码覆盖进程中原来的程序代码，并且使进程使用函数提供的命令行参数和环境变量去执行新的程序。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">v&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">函数族调用成功时，系统把一个新程序的地址空间代替调用进程的地址空间并装入新程序的内容，同事忽略原exec函数的返回，不执行exec函数后的所有语句，系统将从新程序的main函数处开始执行。如果调用失败，返回-1。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; BACKGROUND: rgb(255,255,0); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">2.&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; BACKGROUND: rgb(255,255,0); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">fork-exec&nbsp;模型 （子进程和父进程的执行顺序问题？）</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">3.&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">vfork-exec&nbsp;模型</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">v&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">函数vfork与fork区别</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">：</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'"></span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">vfork创建的子进程并不复制父进程的数据，在随后的exec调用中系统会复制新程序的数据到内存中</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#8218;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">父进程以vfork方式创建子进程后将被阻塞，直到子进程退出或执行exec调用才继续运行。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">4.&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">system&nbsp;模型</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">#include&lt;stdlib.h&gt;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">Int&nbsp;system(char&nbsp;*string)</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">函数system阻塞调用它的进程，并执行字符串string中shell命令。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">进程的休眠</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">unsigned&nbsp;int&nbsp;sleep(unsigned&nbsp;int&nbsp;seconds);</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">进程调用函数sleep后休眠seconds秒，直到时间结束或收到不可忽略信号为止。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">进程的终止</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">void&nbsp;exit(int&nbsp;status);</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">参数status的低8位记载了进程的终止状态，进程终止后将这个状态返回给它的父进程</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; VERTICAL-ALIGN: baseline; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">进程的同步</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">pid_t&nbsp;wait(int&nbsp;*status);</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">pid_t&nbsp;waitpid(pid_t&nbsp;pid,int&nbsp;*status,int&nbsp;options);</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">v&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">Wait挂起调用它的进程，直到它的任一子进程退出或者收到一个不能忽略的信号为止，如果在父进程执行wait调用前就已经有子进程退出，则立刻返回。函数成功调用后返回结束运行子进程的ID，否则返回-1。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">v&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">Waitpid用于多个子进程的操作，如等待特定子进程等。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(255,0,0); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">实例1：<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; FONT: statusbar; 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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</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 src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">unistd.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;&nbsp;main()<br><img id=Codehighlighter1_51_313_Open_Image onclick="this.style.display='none'; Codehighlighter1_51_313_Open_Text.style.display='none'; Codehighlighter1_51_313_Closed_Image.style.display='inline'; Codehighlighter1_51_313_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_51_313_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_51_313_Closed_Text.style.display='none'; Codehighlighter1_51_313_Open_Image.style.display='inline'; Codehighlighter1_51_313_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_51_313_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_51_313_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;pid_t&nbsp;i,j;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;status;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">fork())</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_98_227_Open_Image onclick="this.style.display='none'; Codehighlighter1_98_227_Open_Text.style.display='none'; Codehighlighter1_98_227_Closed_Image.style.display='inline'; Codehighlighter1_98_227_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_98_227_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_98_227_Closed_Text.style.display='none'; Codehighlighter1_98_227_Open_Image.style.display='inline'; Codehighlighter1_98_227_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_98_227_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_98_227_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">child&nbsp;begin.pid=%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,getpid());<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(</span><span style="COLOR: #000000">40</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">child&nbsp;end.pid=%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,getpid());<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">wait(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">status);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">child&nbsp;pid=%d,exit&nbsp;pid=%d,status=%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,i,j,status);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<br>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(255,0,0); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">实例2：<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; FONT: statusbar; 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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</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 src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">unistd.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">signal.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_70_549_Open_Image onclick="this.style.display='none'; Codehighlighter1_70_549_Open_Text.style.display='none'; Codehighlighter1_70_549_Closed_Image.style.display='inline'; Codehighlighter1_70_549_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_70_549_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_70_549_Closed_Text.style.display='none'; Codehighlighter1_70_549_Open_Image.style.display='inline'; Codehighlighter1_70_549_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_70_549_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_70_549_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;pid_t&nbsp;pid1,pid2,pid3;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;status;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_121_547_Open_Image onclick="this.style.display='none'; Codehighlighter1_121_547_Open_Text.style.display='none'; Codehighlighter1_121_547_Closed_Image.style.display='inline'; Codehighlighter1_121_547_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_121_547_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_121_547_Closed_Text.style.display='none'; Codehighlighter1_121_547_Open_Image.style.display='inline'; Codehighlighter1_121_547_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_121_547_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_121_547_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((pid1</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">fork())</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit&nbsp;(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(pid1</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_179_209_Open_Image onclick="this.style.display='none'; Codehighlighter1_179_209_Open_Text.style.display='none'; Codehighlighter1_179_209_Closed_Image.style.display='inline'; Codehighlighter1_179_209_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_179_209_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_179_209_Closed_Text.style.display='none'; Codehighlighter1_179_209_Open_Image.style.display='inline'; Codehighlighter1_179_209_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_179_209_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_179_209_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(</span><span style="COLOR: #000000">30</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">((pid2</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">fork())</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit&nbsp;(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(pid2</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_267_297_Open_Image onclick="this.style.display='none'; Codehighlighter1_267_297_Open_Text.style.display='none'; Codehighlighter1_267_297_Closed_Image.style.display='inline'; Codehighlighter1_267_297_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_267_297_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_267_297_Closed_Text.style.display='none'; Codehighlighter1_267_297_Open_Image.style.display='inline'; Codehighlighter1_267_297_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_267_297_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_267_297_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(</span><span style="COLOR: #000000">40</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;exit(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">fork&nbsp;child,pid=[%d][%d]\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,pid1,pid2);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pid3</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">wait(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">status);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kill(pid1,SIGTERM);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kill(pid2,SIGTERM);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">kill&nbsp;child.pid=[%d],exit&nbsp;pid=%d,status=%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,pid1,pid2,pid3,status);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pid3</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">wait(</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">status);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sleep(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><br></span><br></span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span>&nbsp;</p>
</div>
<!--endfragment-->
<img src ="http://www.cnitblog.com/lenatem/aggbug/50709.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lenatem/" target="_blank">雅量</a> 2008-10-27 08:18 <a href="http://www.cnitblog.com/lenatem/archive/2008/10/27/50709.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ primer学习笔记（一）---快速入门</title><link>http://www.cnitblog.com/lenatem/archive/2008/10/24/50639.html</link><dc:creator>雅量</dc:creator><author>雅量</author><pubDate>Fri, 24 Oct 2008 02:03:00 GMT</pubDate><guid>http://www.cnitblog.com/lenatem/archive/2008/10/24/50639.html</guid><wfw:comment>http://www.cnitblog.com/lenatem/comments/50639.html</wfw:comment><comments>http://www.cnitblog.com/lenatem/archive/2008/10/24/50639.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lenatem/comments/commentRss/50639.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lenatem/services/trackbacks/50639.html</trackback:ping><description><![CDATA[<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 37.5pt; TEXT-INDENT: -37.5pt; mso-list: l3 level1 lfo1; tab-stops: list 37.5pt"><font color=#000000><span lang=EN-US style="mso-bidi-font-family: 宋体"><span style="mso-list: Ignore"><font size=3>第一章</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size=3>快速入门</font></span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><font size=3><font color=#000000><span lang=EN-US>1.1</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">编写简单的</span><span lang=EN-US>C++</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">程序</span></font></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; tab-stops: list 21.0pt"><font color=#000000><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore"><font size=3>&#178;</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size=3>操作系统通过</font></span><span lang=EN-US><font size=3>main</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size=3>函数返回的值来确定程序是否成功执行完毕。返回</font></span><span lang=EN-US><font size=3>0</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size=3>值表明程序成功执行完毕。</font></span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; tab-stops: list 21.0pt"><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore"><font color=#000000><font size=3>&#178;</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></span><font size=3><span lang=EN-US style="COLOR: red">Main</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">函数的返回值必须是</span><span lang=EN-US style="COLOR: red">int</span><span style="COLOR: red; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">型</span><font color=#000000><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">，该类型表示整数。</span><span lang=EN-US>Int</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">类型是内置类型，该类型是由</span><span lang=EN-US>C++</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">语言定义的。</span></font></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l2 level1 lfo2; tab-stops: list 21.0pt"><font size=3><font color=#000000><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"></span></font></font>&nbsp;</p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><font size=3><font color=#000000><span lang=EN-US>1.2</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">初窥输入</span><span lang=EN-US>/</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">输出</span></font></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo3; tab-stops: list 21.0pt"><font color=#000000><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore"><font size=3>&#178;</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font size=3><span lang=EN-US>4</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">个</span></font><span lang=EN-US><font size=3>IO</font></span><font size=3><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">对象：</span><span lang=EN-US>cin</span></font><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size=3>标准输入；</font></span><span lang=EN-US><font size=3>cout</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size=3>标准输出；</font></span><span lang=EN-US><font size=3>cerr</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size=3>标准错误；</font></span><span lang=EN-US><font size=3>clog</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size=3>对象用于产生程序执行的一般信息。</font></span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo3; tab-stops: list 21.0pt"><font color=#000000><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore"><font size=3>&#178;</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span lang=EN-US><font size=3>Endl</font></span></font><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size=3><font color=#000000>是一个特殊值，称为操纵符，将它写入输出流时，具有输出换行效果，</font><span style="COLOR: red">并刷新与设备相关联的缓冲区</span><font color=#000000>。通过刷新缓冲区，用户可立即看到写入到流中的输出。</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo3; tab-stops: list 21.0pt"><font color=#000000><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore"><font size=3>&#178;</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size=3>使用命名空间，程序员可以避免由于无意中使用了与库中所定义的名字相同的名字而引致冲突</font></span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l1 level1 lfo3; tab-stops: list 21.0pt"><font color=#000000><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore"><font size=3>&#178;</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size=3>在写</font></span><span lang=EN-US><font size=3>C++</font></span></font><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size=3><font color=#000000>程序时，</font><span style="COLOR: red">大部分出现空格符的地方可用换行符代替</span><font color=#000000>。这条规则的一个例外是字符串字面值中的空格符不能用换行符代替。另一个例外是空格符不允许出现在预处理指示中。</font></font></span></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><font size=3><font color=#000000><span lang=EN-US></span></font></font>&nbsp;</p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><font size=3><font color=#000000><span lang=EN-US>1.3</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">关于注释</span></font></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l4 level1 lfo4; tab-stops: list 21.0pt"><font color=#000000><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore"><font size=3>&#178;</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size=3>程序通常混用两种注释形式。注释对一般用于多行解释，而双斜线注释则常用于半行或单行的标记。</font></span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l4 level1 lfo4; tab-stops: list 21.0pt"><font color=#000000><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore"><font size=3>&#178;</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size=3>注释总是以</font></span><span lang=EN-US><font size=3>/*</font></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size=3>开始并以</font></span><span lang=EN-US><font size=3>*/</font></span></font><font size=3><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font color=#000000>结束。这意味着，</font><span style="COLOR: red">一个注释对不能出现在另一个注释对中</span><font color=#000000>。当注释掉程序的一大部分时，似乎最简单的办法就是在临时忽略的区域前后放一个注释对。问题是如果那段代码已经有了注释对，那么新插入的注释对将提前终止。</font><span style="COLOR: red">临时忽略一段代码更好的方法，用编辑器在要忽略的每一行代码前面插入单行注释。</span></span><span lang=EN-US style="COLOR: red"><o:p></o:p></span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><font size=3><font color=#000000><span lang=EN-US></span></font></font>&nbsp;</p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><font size=3><font color=#000000><span lang=EN-US>1.4</span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">控制结构</span></font></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo5; tab-stops: list 21.0pt"><font color=#000000><span lang=EN-US style="FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore"><font size=3>&#178;</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'"><font size=3>按错误报告的顺序改正错误是个好习惯，通常一个错误可能会产生一连串的影响，并导致编译器报告比实际多得多的错误。最好在每次修改后或者最多改正了一些显而易见的错误后，就重新编译代码。</font></span></font></p>
<p class=MsoNormal style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: -21pt; mso-list: l0 level1 lfo5; tab-stops: list 21.0pt"><font color=#000000><span lang=EN-US style="COLOR: blue; FONT-FAMILY: Wingdings; mso-bidi-font-family: Wingdings; mso-fareast-font-family: Wingdings"><span style="mso-list: Ignore"><font size=3>&#178;</font><span style="FONT: 7pt 'Times New Roman'">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><font size=3><span style="COLOR: blue; FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">读入未知数目的输入<br></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; FONT: statusbar; 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.cnitblog.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">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()&nbsp;<br><img id=Codehighlighter1_33_159_Open_Image onclick="this.style.display='none'; Codehighlighter1_33_159_Open_Text.style.display='none'; Codehighlighter1_33_159_Closed_Image.style.display='inline'; Codehighlighter1_33_159_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_33_159_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_33_159_Closed_Text.style.display='none'; Codehighlighter1_33_159_Open_Image.style.display='inline'; Codehighlighter1_33_159_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_33_159_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_33_159_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;sum</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;val;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(std::cin</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">val)&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sum</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">val;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;std::cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">sum</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">std::endl;&nbsp;<br><img src="http://www.cnitblog.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">;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
</span></font></font>
<img src ="http://www.cnitblog.com/lenatem/aggbug/50639.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lenatem/" target="_blank">雅量</a> 2008-10-24 10:03 <a href="http://www.cnitblog.com/lenatem/archive/2008/10/24/50639.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UNIX下C语言编程（一）--进程基本环境</title><link>http://www.cnitblog.com/lenatem/archive/2008/10/24/50638.html</link><dc:creator>雅量</dc:creator><author>雅量</author><pubDate>Fri, 24 Oct 2008 02:03:00 GMT</pubDate><guid>http://www.cnitblog.com/lenatem/archive/2008/10/24/50638.html</guid><wfw:comment>http://www.cnitblog.com/lenatem/comments/50638.html</wfw:comment><comments>http://www.cnitblog.com/lenatem/archive/2008/10/24/50638.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/lenatem/comments/commentRss/50638.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/lenatem/services/trackbacks/50638.html</trackback:ping><description><![CDATA[<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">进程通常由程序、数据和进程控制块3个部分组成</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">。程序部分描述了进程所要完成的功能；数据部分为进程提供了搜需的堆栈和私有数据；进程控制块含有进程的描述和控制信息。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">进程和线程：</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">一个进程可以拥有多个线程。线程没有独立的资源，它共享进程的ID，共享进程的资源。线程是UNIX中最小的调度单位。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">前台进程和后台进程：</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'"></span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">用户在Shell提示符下键入命令，创建进程，此后该进程接管终端，Shell中不能再输入其他的命令，知道进程执行完毕，才将终端控制权返回Shell并显示用户提示符。这样的进程就是前台进程。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#8218;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">如果用户再输入Shell命令时，在命令串后加上&#8220;&amp;&#8221;,shell将不等待进程执行完毕就直接返回，于是就可以同事运行进程和执行shell操作，这样的进程就是后台进程，后台进程并不接管终端，所以必须是非交互式的。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">守护进程：</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">与终端无关，常驻后台执行的特殊进程。UNIX中最著名的两个守护进程：</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'"></span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">sysproc进程，它是UNIX的第一个进程，标识号为0，能合理地调度系统中运行的进程，负责将进程从硬盘交换区调入内如或者讲进程从内存调到硬盘交换区</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#8218;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">init进程，系统初始化进程，标识号1，是除sysproc外所有进程的祖先。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">进程状态：</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'"></span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">运行态：进程已经分配到CPU，正在处理机上执行时的状态。同意时刻处于运行态的进程数不能大于CPU的数目。运行态可分为用户态和核心态。如果进程正在运行用户代码，进程处于用户态。如果进程出现系统调用或者系统中断，运行操作系统内部代码，进程处于核心态。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#8218;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">就绪态：进程已具备运行条件，但其他进程正在用CPU，所以暂时不能运行而等待分配CPU的状态。处于就绪态的进程一旦获得了CPU就能立刻运行。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#402;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">睡眠态：进程正在等待某种事件的发生而暂时不能运行的状态。处于睡眠态的进程尚不具备运行条件，即使CPU空闲，它也无法使用。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">进程标识号：</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">UNIX中每个进程具有唯一的标识号，操作系统采用一个非负整数标识每一个进程。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">UNIX中读取进程ID号的函数如下：</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">#include&nbsp;&lt;sys/types.h&gt;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">#include&lt;unistd.h&gt;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">pid_t&nbsp;getpid();&nbsp;&nbsp;&nbsp;&nbsp;//返回当前进程ID</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">pid_t&nbsp;getpgrp();&nbsp;&nbsp;&nbsp;//返回当前进程组ID</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">pid_t&nbsp;getppid();&nbsp;&nbsp;&nbsp;//返回父进程ID</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">类型pid_t是进程标识类型，可以用long或者int代替</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">进程的用户标识号：</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">当进程由用户启动时，该用户的标识号就是进程的实际用户标识，该用户的组标识号就是进程实际组标识号。进程的实际用户标识号和实际组标识号仅用于系统记账，参与权限检查的是进程的有效用户标识号和有效组标识号。一般情况下，实际标识号和有效标识号相一致。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">UNIX中读取用户ID号函数如下：</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">#include&lt;unistd.h&gt;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">uid_t&nbsp;getuid();&nbsp;&nbsp;&nbsp;&nbsp;//返回进程实际用户ID</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">uid_t&nbsp;geteuid();&nbsp;&nbsp;&nbsp;//返回进程有效用户ID</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">gid_t&nbsp;getgid();&nbsp;&nbsp;&nbsp;&nbsp;//返回进程实际组ID</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">gid_t&nbsp;getegid();&nbsp;&nbsp;&nbsp;//返回进程有效组ID</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(255,0,0); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">实例：</span></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; FONT: statusbar; 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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">sys</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">types.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">unistd.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;main()&nbsp;<br><img id=Codehighlighter1_59_217_Open_Image onclick="this.style.display='none'; Codehighlighter1_59_217_Open_Text.style.display='none'; Codehighlighter1_59_217_Closed_Image.style.display='inline'; Codehighlighter1_59_217_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_59_217_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_59_217_Closed_Text.style.display='none'; Codehighlighter1_59_217_Open_Image.style.display='inline'; Codehighlighter1_59_217_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_59_217_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_59_217_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">pid=%d,gid=%d,ppid=%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,getpid(),getpgrp(),getppid());&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">uid=%d,euid=%d,gid=%d,egid=%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,getuid(),geteuid(),getgid(),getegid());&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<br>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'"><font color=#000000>&#178;&nbsp;</font></span>进程命令行&nbsp;</span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(255,0,0); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">实例：</span></span></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; FONT: statusbar; 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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;argc,</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;argv[])&nbsp;<br><img id=Codehighlighter1_56_183_Open_Image onclick="this.style.display='none'; Codehighlighter1_56_183_Open_Text.style.display='none'; Codehighlighter1_56_183_Closed_Image.style.display='inline'; Codehighlighter1_56_183_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_56_183_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_56_183_Closed_Text.style.display='none'; Codehighlighter1_56_183_Open_Image.style.display='inline'; Codehighlighter1_56_183_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_56_183_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_56_183_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;fprintf(stderr,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">argc=%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,argc);&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(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">argc;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">argv[%d]=%s\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,i,argv[i]);&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<br>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(0,0,255); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">环境变量</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">UNIX中，存储了一系列的变量，在shell下执行"env"命令查看。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">环境变量分为系统环境变量和用户环境变量。系统环境变量在注册师自动设置。用户环境变量在shell中使用赋值命令和export命令设置。如下例设置了变量ZYX，再将其转化为用户环境变量：</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;#ZYX=/u/zyx&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//赋值语句</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;#export&nbsp;ZYX&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//export语句</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;#env&nbsp;|grep&nbsp;zyx&nbsp;&nbsp;//验证变量</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">&nbsp;&nbsp;&nbsp;ZYX=/u/zyx</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#178;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">获取环境变量的方法：</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'"></span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">全局变量法。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">UNIX用一个指针数组来存储全部环境值：</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">extern&nbsp;char&nbsp;**environ;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(255,0,0); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">实例：</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; FONT: statusbar; 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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cnitblog.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;</span><span style="COLOR: #000000">**</span><span style="COLOR: #000000">environ;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()&nbsp;<br><img id=Codehighlighter1_57_155_Open_Image onclick="this.style.display='none'; Codehighlighter1_57_155_Open_Text.style.display='none'; Codehighlighter1_57_155_Closed_Image.style.display='inline'; Codehighlighter1_57_155_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_57_155_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_57_155_Closed_Text.style.display='none'; Codehighlighter1_57_155_Open_Image.style.display='inline'; Codehighlighter1_57_155_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_57_155_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_57_155_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&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">p</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">environ;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p)&nbsp;<br><img id=Codehighlighter1_99_152_Open_Image onclick="this.style.display='none'; Codehighlighter1_99_152_Open_Text.style.display='none'; Codehighlighter1_99_152_Closed_Image.style.display='inline'; Codehighlighter1_99_152_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_99_152_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_99_152_Closed_Text.style.display='none'; Codehighlighter1_99_152_Open_Image.style.display='inline'; Codehighlighter1_99_152_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_99_152_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_99_152_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%s\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p);&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;p</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;</span></div>
<br>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: 'Wingdings'; mso-spacerun: 'yes'">&#8218;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">函数调用法。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">UNIX中操作环境变量的函数如下：</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">#include&nbsp;&lt;stdlib.h&gt;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">char&nbsp;*getenv(char&nbsp;*name);&nbsp;&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">int&nbsp;putenv(const&nbsp;char&nbsp;*string);&nbsp;</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">函数getenv以字符串形式返回环境变量name的取值，如果参数name为NULL或者环境变量列表无name变量，返回NULL。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">函数putenv增加、修改或删除环境变量。参数string指向一个字符串，格式为&#8220;name=value&#8221;。如果环境列表中没有name变量，则增加变量并设置值为"value"；如果变量已经存在，则更改其值为"value";如果value为空，在删除环境变量name的值。函数成功时返回非0值，否则返回0。</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<p class=p0 style="MARGIN-TOP: 0pt; MARGIN-BOTTOM: 0pt; TEXT-ALIGN: justify"><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(255,0,0); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'">实例：</span><span style="FONT-WEIGHT: bold; FONT-SIZE: 14pt; COLOR: rgb(255,0,0); FONT-FAMILY: '楷体_GB2312'; mso-spacerun: 'yes'"><o:p></o:p></span></p>
<div style="BORDER-RIGHT: #cccccc 1px solid; PADDING-RIGHT: 5px; BORDER-TOP: #cccccc 1px solid; PADDING-LEFT: 4px; PADDING-BOTTOM: 4px; FONT: statusbar; 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.cnitblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdlib.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;argc,</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">**</span><span style="COLOR: #000000">argv)&nbsp;<br><img id=Codehighlighter1_73_168_Open_Image onclick="this.style.display='none'; Codehighlighter1_73_168_Open_Text.style.display='none'; Codehighlighter1_73_168_Closed_Image.style.display='inline'; Codehighlighter1_73_168_Closed_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_73_168_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_73_168_Closed_Text.style.display='none'; Codehighlighter1_73_168_Open_Image.style.display='inline'; Codehighlighter1_73_168_Open_Text.style.display='inline';" src="http://www.cnitblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_73_168_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"><img src="http://www.cnitblog.com/Images/dot.gif"></span><span id=Codehighlighter1_73_168_Open_Text><span style="COLOR: #000000">{&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">argc;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;fprintf(stderr,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%s=%s\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,argv[i],getenv(argv[i]));&nbsp;&nbsp;&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">&nbsp;<br><img src="http://www.cnitblog.com/Images/OutliningIndicators/None.gif" align=top></span></div>
<!--endfragment-->
<img src ="http://www.cnitblog.com/lenatem/aggbug/50638.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/lenatem/" target="_blank">雅量</a> 2008-10-24 10:03 <a href="http://www.cnitblog.com/lenatem/archive/2008/10/24/50638.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>