﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-记录点滴成长</title><link>http://www.cppblog.com/qhmao/</link><description /><language>zh-cn</language><lastBuildDate>Thu, 23 Apr 2026 04:09:30 GMT</lastBuildDate><pubDate>Thu, 23 Apr 2026 04:09:30 GMT</pubDate><ttl>60</ttl><item><title>VC.net 2005找不到MSVCR80D.dll的完美解决方案</title><link>http://www.cppblog.com/qhmao/archive/2009/08/08/92598.html</link><dc:creator>qhmao</dc:creator><author>qhmao</author><pubDate>Sat, 08 Aug 2009 01:29:00 GMT</pubDate><guid>http://www.cppblog.com/qhmao/archive/2009/08/08/92598.html</guid><wfw:comment>http://www.cppblog.com/qhmao/comments/92598.html</wfw:comment><comments>http://www.cppblog.com/qhmao/archive/2009/08/08/92598.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/qhmao/comments/commentRss/92598.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/qhmao/services/trackbacks/92598.html</trackback:ping><description><![CDATA[<div class=postText>
<div>[分享]VC.net&nbsp;2005找不到MSVCR80D.dll的完美解决方案</div>
<div>&nbsp;</div>
<img onclick=javascript:window.open(this.src); src="http://stevenz.dpnet.com.cn/UploadFiles/2007-8/20078828013188280131.jpg" onload="javascript:if(this.width>650){this.resized=true;this.style.width=650;}" src_cetemp="http://stevenz.dpnet.com.cn/UploadFiles/2007-8/20078828013188280131.jpg"><br><br><br><br>&nbsp;<span>问题描述：大部分的</span><span ms shell dlg??>vs.net&nbsp;2005</span><span>的用户在新建</span><span ms shell dlg??>&#8220;win32</span><span>项目－</span><span ms shell dlg??>windows</span><span>应用程序</span><span ms shell dlg??>&#8221;的时候，新建的工程都通不过去，出现如下提示：</span>
<p ms shell dlg??>Solution&nbsp;to&nbsp;&#8220;MSVCR80D.dll&nbsp;not&nbsp;found&#8221;.</p>
<p><span ms shell dlg??>&#8220;</span><span>没有找到</span><span ms shell dlg??>MSVCR80D.dll</span><span>，因此这个应用程序未能启动。重新安装应用程序可能会修复此问题。</span><span ms shell dlg??>&#8221;</span></p>
<p ms shell dlg??>&nbsp;</p>
<p><span>问题所在：由于</span><span ms shell dlg??>vs.net&nbsp;2005&nbsp;</span><span>采用了一种新的</span><span ms shell dlg??>DLL</span><span>方案，搞成一个</span><span ms shell dlg??>exe</span><span>还要配有一个</span><span ms shell dlg??>manifest</span><span>文件（一般在嵌入文件里了，所以看不到，不过也可以不嵌入，这样会生产一个</span><span ms shell dlg??>&lt;</span><span>程序名</span><span ms shell dlg??>&gt;.exe.manifest</span><span>的文件，没它</span><span ms shell dlg??>exe</span><span>自己就转不了了：）这是个新功能，微软弄了个新工具（</span><span ms shell dlg??>mt.exe</span><span>），结果不好用，好像是</span><span ms shell dlg??>fat32</span><span>下时间戳有问题（在</span><span ms shell dlg??>ntfs</span><span>下这个问题就没有了），搞得</span><span ms shell dlg??>manifest</span><span>有时嵌入不到</span><span ms shell dlg??>exe</span><span>中（默认配置是嵌入的，所以就报错找不到</span><span ms shell dlg??>dll</span><span>了。</span></p>
<p>&nbsp;</p>
<p>解决方案：</p>
<p><span ms shell dlg??>1</span><span>．</span><span ms shell dlg??>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>微软对于这个问题应该也有处理，不过感觉不是很人性化。在</span><span ms shell dlg??>&#8220;属性-&gt;</span><span>配置属性</span><span ms shell dlg??>-&gt;</span><span>清单工具</span><span ms shell dlg??>-&gt;</span><span>常规</span><span ms shell dlg??>&#8220;</span><span>下有一个&#8221;使用</span><span>FAT32</span><span>解决办法，把它选成是，就可以了。（注意：一定要先配置这个选项，然后再编译工程，要不然还是不好用：）</span></p>
<p><span ms shell dlg??>2</span><span>．</span><span ms shell dlg??>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>找到你的工程的文件夹，如（</span><span ms shell dlg??>myproject</span><span>），找到其下的</span><span ms shell dlg??>myproject\myproject\Debug\&nbsp;myproject.rec</span><span>，把它删掉（删掉整个</span><span ms shell dlg??>Debug</span><span>目录也可以），重新编译，搞定！</span></p>
<p>&nbsp;</p>
<p><span ms shell dlg??>3</span><span>．</span><span ms shell dlg??>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>本解决方案可以直接再应用向导中配置，严重符合高级人机界面要求：</span></p>
<p><span ms shell dlg??>1</span><span>）</span><span ms shell dlg??>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>首先找到你的</span><span ms shell dlg??>vs.net</span><span>安装目录（如我的是</span><span ms shell dlg??>E:\Program&nbsp;Files\Microsoft&nbsp;Visual&nbsp;Studio&nbsp;8</span><span>），定位到</span><span ms shell dlg??>Microsoft&nbsp;Visual&nbsp;Studio&nbsp;8\VC\VCWizards\AppWiz\Generic\Application</span><span>文件夹，备份这个</span><span ms shell dlg??>Application</span><span>文件夹，不然一会你自己改咂了我可不管啊：）。</span></p>
<p><span ms shell dlg??>2</span><span>）</span><span ms shell dlg??>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>打开</span><span ms shell dlg??>html\2052</span><span>，看到两个文件了吧，就那个</span><span ms shell dlg??>AppSettings.htm</span><span>了，这个管着你的那个配置向导的界面，用</span><span ms shell dlg??>UE(</span><span>不要告诉我你不知道</span><span ms shell dlg??>ue</span><span>啥东西，</span><span ms shell dlg??>baidu&nbsp;it)</span><span>打开，在</span><span ms shell dlg??>266</span><span>行</span><span ms shell dlg??>&#8220;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/SPAN&gt;&#8221;</span><span>后回车，然后插入一下内容：</span></p>
<p ms shell dlg??>&lt;!--&nbsp;this&nbsp;(hua)section&nbsp;is&nbsp;added&nbsp;by&nbsp;HUA.&nbsp;--&gt;</p>
<p ms shell dlg??><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;&lt;BR&gt;</span></p>
<p ms shell dlg??><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p><span ms shell dlg?; mso-highlight: silver?>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;</span><span ms shell dlg?; mso-highlight: silver?>SPAN</span><span ms shell dlg?; mso-highlight: silver?>&nbsp;class='itemTextTop'&nbsp;id='FILE_SYSTEM_SPAN'&nbsp;title=''&gt;</span><span>选择你所使用的文件系统</span><span ms shell dlg?; mso-highlight: silver?>:</span></p>
<p ms shell dlg??><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p ms shell dlg??><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;P&nbsp;CLASS='Spacer'&gt;</span><span>&amp;nbsp</span><span>&lt;/P&gt;</span></p>
<p ms shell dlg??><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></p>
<p ms shell dlg??><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;INPUT&nbsp;TYPE='radio'&nbsp;CLASS='Radio'&nbsp;checked&nbsp;onPropertyChange=''&nbsp;NAME='filesystem'&nbsp;ID='FAT32'&nbsp;ACCESSKEY='F'&nbsp;TITLE='FAT32'&gt;</span></p>
<p ms shell dlg??><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;DIV&nbsp;CLASS='itemTextRadioB'&nbsp;ID='FAT32_DIV'&nbsp;TITLE='FAT32'&gt;</span></p>
<p ms shell dlg??><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;LABEL&nbsp;FOR='FAT32'&nbsp;ID='FAT32_LABEL'&gt;FAT32(&lt;U&gt;F&lt;/U&gt;)&lt;/LABEL&gt;</span></p>
<p ms shell dlg??><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/DIV&gt;</span></p>
<p>&nbsp;</p>
<p ms shell dlg??><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;BR&gt;</span></p>
<p>&nbsp;</p>
<p ms shell dlg??><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;INPUT&nbsp;TYPE='radio'&nbsp;CLASS='Radio'&nbsp;onPropertyChange=''&nbsp;NAME='filesystem'&nbsp;ID='NTFS'&nbsp;ACCESSKEY='N'&nbsp;TITLE='NTFS'&gt;</span></p>
<p ms shell dlg??><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;DIV&nbsp;CLASS='itemTextRadioB'&nbsp;ID='NTFS_DIV'&nbsp;TITLE='NTFS'&gt;</span></p>
<p ms shell dlg??><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;LABEL&nbsp;FOR='NTFS'&nbsp;ID='NTFS_LABEL'&gt;NTFS(&lt;U&gt;N&lt;/U&gt;)&lt;/LABEL&gt;</span></p>
<p ms shell dlg??><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/DIV&gt;</span></p>
<p ms shell dlg??><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/</span><span>SPAN</span><span>&gt;</span></p>
<p ms shell dlg??>&lt;!--&nbsp;end&nbsp;of&nbsp;(hua)section&nbsp;--&gt;</p>
<p>好，保存关闭，这个改完了，准备下一个。</p>
<p>&nbsp;</p>
<p><span ms shell dlg??>3</span><span>）</span><span ms shell dlg??>&nbsp;&nbsp;&nbsp;&nbsp;</span><span>打开</span><span ms shell dlg??>scripts\2052</span><span>，这里就一个文件，</span><span ms shell dlg??>ue</span><span>打开它，找到</span><span ms shell dlg??>138</span><span>行</span><span ms shell dlg??>&#8220;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;bATL&nbsp;=&nbsp;wizard.FindSymbol('SUPPORT_ATL');&#8221;</span><span>其后回车，插入如下内容：</span></p>
<p ms shell dlg??>//&nbsp;this&nbsp;(hua)section&nbsp;is&nbsp;added&nbsp;by&nbsp;HUA.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>&nbsp;</span><span>var bNTFS = wizard.FindSymbol('FILE_SYSTEM_SPAN');</span></p>
<p ms shell dlg??>//&nbsp;end&nbsp;of&nbsp;(hua)section&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p><span ms shell dlg??>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span>好，继续找到</span><span ms shell dlg??>210</span><span>行</span><span ms shell dlg??>(</span><span>源文件的</span><span ms shell dlg??>210</span><span>，你加了上边的语句就不是</span><span ms shell dlg??>210</span><span>了：</span><span ms shell dlg??>)&#8220;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;config&nbsp;=&nbsp;proj.Object.Configurations.Item('Release');&#8221;</span><span>注</span><span>意这次要在这行&#8220;</span><span>前边</span><span>&#8221;加如下内容</span><span ms shell dlg??>：</span></p>
<p ms shell dlg??>//&nbsp;this&nbsp;(hua)section&nbsp;is&nbsp;added&nbsp;by&nbsp;HUA.</p>
<p><span><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span>if(!bNTFS)</span></p>
<p ms shell dlg??><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{</span></p>
<p ms shell dlg??><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;MFTool&nbsp;=&nbsp;config.Tools('VCManifestTool');</span></p>
<p ms shell dlg??><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MFTool.UseFAT32Workaround&nbsp;=&nbsp;true;</span></p>
<p ms shell dlg??><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></p>
<p ms shell dlg??>//&nbsp;end&nbsp;of&nbsp;(hua)section</p>
<p><span>该段内容解决了</span><span>在向导下不点&#8220;下一步&#8221;而直接点&#8220;完成&#8221;来生成一个win32控制台项目时，则未能自动设置UseFAT32Workaround属性的值为true。</span></p>
<p>&nbsp;</p>
</div>
<img src ="http://www.cppblog.com/qhmao/aggbug/92598.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qhmao/" target="_blank">qhmao</a> 2009-08-08 09:29 <a href="http://www.cppblog.com/qhmao/archive/2009/08/08/92598.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>const  *            * const</title><link>http://www.cppblog.com/qhmao/archive/2009/05/06/82078.html</link><dc:creator>qhmao</dc:creator><author>qhmao</author><pubDate>Wed, 06 May 2009 10:24:00 GMT</pubDate><guid>http://www.cppblog.com/qhmao/archive/2009/05/06/82078.html</guid><wfw:comment>http://www.cppblog.com/qhmao/comments/82078.html</wfw:comment><comments>http://www.cppblog.com/qhmao/archive/2009/05/06/82078.html#Feedback</comments><slash:comments>4</slash:comments><wfw:commentRss>http://www.cppblog.com/qhmao/comments/commentRss/82078.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/qhmao/services/trackbacks/82078.html</trackback:ping><description><![CDATA[<br>1.const int *r=&amp;x; //声明r为一个指向常量的x的指针，r指向的对象不能被修改，但他可以指向任何地址的常量。<br><br><span style="COLOR: red">先是一个指针 *r，则*r所指的对象不可被修改。</span><br><br>2.int const *r=&amp;x; //与用法1完全等价，没有任何区别。<br><br>3.int * const r=&amp;x; //声明r为一个常量指针，他指向x，r这个指针的指向不能被修改，但他指向的地址的内容可以修改。<br><br><span style="COLOR: red"><strong>先是一个常量，则其值不可修改，</strong></span><br><br>4.const int * const r=&amp;x; //综合1、3用法，r是一个指向常量的常量型指针。 <br><br><br><br>原文： <a href="http://www.fjtu.com.cn/fjnu/courseware/1308/course/_source/web/lesson/chapter9/j5.htm">http://www.fjtu.com.cn/fjnu/courseware/1308/course/_source/web/lesson/chapter9/j5.htm</a><br>
<p class=p14 align=center><span class=p18>第五节　 const 指针</span><br></p>
<p class=p14>　　对于下面涉及指针定义和操作的语句：<br><span class=p3399FF>　　　　int a=1;<br>　　　　int *pi；<br>　　　　pi=&amp;a；<br>　　　　*pi=58；</span><br>　　可以看到，一个指针涉及到两个变量，指针本身pi和指向的变量a。修改这两个变量的对应操作为&#8220;pi=&amp;a；&#8221;和&#8220;*pi=58；&#8221;。<br><br><span class=p148>1．指向常量的指针(常量指针)</span><a name=s1></a><br><br>　　<strong>在指针定义语句的类型前加const，表示指向的对象是常量。</strong>例如：<br><span class=p3399FF>　　　　const int a=78；<br>　　　　const int b=28；<br>　　　　int c=18；<br>　　　　const int*pi=&amp;a； //指针类型前力口const<br>　　　　*pi=58； //error：不能修改指针指向的常量<br>　　　　pi=&amp;b; //ok：指针值可以修改<br>　　　　*pi=68； //error：同上<br>　　　　pi=&amp;c；<br>　　　　*pi=88； //error：同上<br>　　　　c=98； //ok</span><br>　　a是常量，将a的地址赋给指向常量的指针pi， 使a的常量性有了保证。如果企图修改a，则会引起&#8220;不能修改常量对象&#8221;(Cannot modify a const object)的编译错误。<br>　　可以将另一个常量地址赋给指针&#8220;pi=&amp;b；&#8221; (指针值可以修改)，这时，仍不能进行&#8220;*p =68；&#8221;的赋值操作，从而保护了被指向的常量不被修改。 见图8-4，图中阴影部分表示不能 </p>
<p class=p14 align=center><img height=74 src="http://www.fjtu.com.cn/fjnu/courseware/1308/course/_source/web/lesson/chapter9/s1.gif" width=437><br>图8-4 指向常量的指针<br></p>
<p class=p14>　　被修改。可以将一个变量地址赋给指针&#8220;pi=&amp;c；&#8221;， 这时，由于不能进行&#8220;*pi=88；&#8221;的赋值操作，从而保护了被指向的变量在指针操作中不被修改。<strong>定义指向常量的指针只限制指针的间接访问操作，而不能规定指针指向的值本身的操作规定性。</strong>例如，变量c可以修改，这在 函数传递中经常被使用。<br>　　例如，下面的程序将两个一样大小的数组传递给一个函数，让其完成复制字符串的工作，为了防止作为源数据的数组遭到破坏，声明该形参为常量字符串：<br>　　　　<span class=ff0000>//**********************<br>　　　　//** 　　ch8_10.cpp 　**<br>　　　　//**********************</span></p>
<p class=ff0000>　　　　#include &lt;iostream.h&gt;</p>
<p class=ff0000>　　　　void mystrcpy(char* dest, const char* source)<br>　　　　{<br>　　　　　while(*dest++ = *source++);<br>　　　　}</p>
<p class=ff0000>　　　　void main()<br>　　　　{<br>　　　　　char a[20]="How are you!";<br>　　　　　char b[20];<br>　　　　　mystrcpy(b,a);<br>　　　　　cout &lt;&lt;b &lt;&lt;endl;<br>　　　　}</p>
<p class=p14>　　运行结果为：<span class=ff0000><br>　　　　How are you!</span><br>　　变量字符串a传递给函数mystrcpy()中的source， 使之成为常量，不允许进行任何修改、但在主函数中， a却是一个普通数组，没有任何约束，可以被修改。<br>　　由于数组a不能直接赋值给b， 所以通过一个函数实现将数组a的内容复制给数组b。<br>　　函数mystrcpy()中的语句是一个空循环，条件表达式是一个赋值语句。随着一个赋值动作，便将一个a数组中的字符赋给了b数组中对应的元素，同时两个数组参数都进行增量操作以指向下一个元素。只要所赋的字符值不是'\0'，(条件表达式取假值)，则循环就一直进行下去。 ，<br>　　<strong>常量指针定义"const int *pi=&amp;a；&#8221;告诉编译，*pi是常量，不能将，pi作为左值进行操作。</strong><br><br><span class=p148>2．指针常量</span><a name=s2></a><br><br>　　<strong>在指针定义语句的指针名前加const，表示指针本身是常量。</strong>例如：<br><span class=p3399FF>　　　　char *constpc="asdf"； //指针名前加const定义指针常量<br>　　　　pc="dfgh"； //error：指针常量不能改变其指针值<br>　　　　*pc='b'； //ok：pc内容为，'bsdf'，<br>　　　　*(pc+1)='c'； //ok：pc内容为'bcdf'，<br>　　　　*pc++='y'； //error：指针常量不能改变其指针值<br>　　　　const int b=28；<br>　　　　int* const pi=&amp;b； //error：不能将const int*转换成int*</span><br>　　pc是指针常量，<strong>在定义指针常量时必须初始化，</strong>就像常量初始化一样。这里初始化的 值是字符串常量的地址，见图8_5</p>
<p>&nbsp;</p>
<p class=p14 align=center><img height=65 src="http://www.fjtu.com.cn/fjnu/courseware/1308/course/_source/web/lesson/chapter9/s2.gif" width=448><br>图8_5 指向变量的指针常量图<br></p>
<p class=p14>　　由于pc是指针常量，所以不能修改该指针值。&#8220;pc="dfgh";&#8221;将引起一个&#8220;不能修改常量对象&#8221;(Cannot modify a const object)的编译错误。<br>　　pc所指向的地址中存放的值并不受指针常量的约束，即*pc不是常量，所以&#8220;*pc='b';&#8221;和&#8220;*(pc+1)='c'；&#8221;的赋值操作是允许的。但&#8220;*pc++=y;&#8221;是不允许的，因为该语句修改*pc的同时也修改了指针值。<br>　　由于此处*pi是不受约束的,所以，将一个常量的地址赋给该指针&#8220;int* const pi=&amp;b;&#8221;是非法的，它将导致一个不能将const int *转换成int *的编译错误，因为那样将使修改常量(如：&#8220;* pi=38;&#8221;)合法化。<br>　　<strong>指针常量定义"int *const pc=&amp;b;&#8221;告诉编译，pc是常量，不能作为左值进行操作，但是允许修改间接访问值，即*pc可以修改。</strong><br><br><span class=p148>3．指向常量的指针常量(常量指针常量)</span><a name=s3></a><br><br>　　可以定义一个指向常量的指针常量，它必须在定义时进行初始化。例如：<br><span class=p3399FF>　　　　const int c=7；<br>　　　　int ai；<br>　　　　const in * const cpc=&amp;ci； //指向常量的指针常量<br>　　　　const int * const cpi=&amp;ai； //ok<br>　　　　cpi=&amp;ci; //error：指针值不能修改<br>　　　　*cpi=39； //error：不能修改所指向的对象<br>　　　　ai=39； //ok</span><br>　　cpc和cpi都是指向常量的指针常量，它们既不允许修改指针值，也不允许修改*cpc的值，见图8-6。</p>
<p>&nbsp;</p>
<p class=p14 align=center><img height=75 src="http://www.fjtu.com.cn/fjnu/courseware/1308/course/_source/web/lesson/chapter9/s3.gif" width=448><br>图8—6 指向常量的指针常量<br></p>
<p class=p14>　　如果初始化的值是变量地址(如&amp;ai)， 那么不能通过该指针来修改该变量的值。也即&#8220;*cpi=39;&#8221;是错误的，将引起&#8220;不能修改常量对象&#8221;(Cannot modify a const object)的编译错误。但&#8220;ai=39；&#8221;是合法的。<br>　　<strong>常量指针常量定义&#8220;coastint * coastcpc=&amp;b；&#8221;告诉编译，cpc和* cpc都是常量，它们都不能作为左值进行操作</strong></p>
<img src ="http://www.cppblog.com/qhmao/aggbug/82078.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qhmao/" target="_blank">qhmao</a> 2009-05-06 18:24 <a href="http://www.cppblog.com/qhmao/archive/2009/05/06/82078.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gdb和g++的简单使用</title><link>http://www.cppblog.com/qhmao/archive/2009/04/17/80308.html</link><dc:creator>qhmao</dc:creator><author>qhmao</author><pubDate>Fri, 17 Apr 2009 15:18:00 GMT</pubDate><guid>http://www.cppblog.com/qhmao/archive/2009/04/17/80308.html</guid><wfw:comment>http://www.cppblog.com/qhmao/comments/80308.html</wfw:comment><comments>http://www.cppblog.com/qhmao/archive/2009/04/17/80308.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/qhmao/comments/commentRss/80308.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/qhmao/services/trackbacks/80308.html</trackback:ping><description><![CDATA[<p style="margin-bottom: 0cm;">在编译之前我们需要在系统里安装<font face="文鼎PL细上海宋Uni, serif">G++
GCC</font>，它们就是<font face="文鼎PL细上海宋Uni, serif">Linux</font>下的<font face="文鼎PL细上海宋Uni, serif">C++/C</font>的编译器。代码如下
</p>
<center>
<table border="0" cellpadding="3" cellspacing="0" width="90%">
    <col width="256">
    <tbody>
        <tr>
            <td width="100%">
            <p><strong>  代码<font face="文鼎PL细上海宋Uni, serif">:</font></strong>  </p>
            </td>
        </tr>
        <tr>
            <td width="100%">
            <p><font face="文鼎PL细上海宋Uni, serif"><br>sudo apt-get
            install build-essential </font>
            </p>
            </td>
        </tr>
    </tbody>
</table>
</center>
<p style="margin-bottom: 0cm;"><font face="文鼎PL细上海宋Uni, serif"><br></font>好，现在我们在文本编辑器里写一个<font face="文鼎PL细上海宋Uni, serif">C</font>的简单的程序（好像所有学习<font face="文鼎PL细上海宋Uni, serif">C</font>或者<font face="文鼎PL细上海宋Uni, serif">C++</font>的书都会出现）
</p>
<center>
<table border="0" cellpadding="3" cellspacing="0" width="90%">
    <col width="256">
    <tbody>
        <tr>
            <td width="100%">
            <p><strong>  代码<font face="文鼎PL细上海宋Uni, serif">:</font></strong>  </p>
            </td>
        </tr>
        <tr>
            <td width="100%">
            <p><font face="文鼎PL细上海宋Uni, serif"><br></font>＃<font face="文鼎PL细上海宋Uni, serif">include
            &lt;stdio.h&gt; <br>int main() <br>{ <br>&nbsp; &nbsp;
            printf("Hello,World!\n"); <br>&nbsp; &nbsp; return 0;
            <br>} </font>
            </p>
            </td>
        </tr>
    </tbody>
</table>
</center>
<p style="margin-bottom: 0cm;"><font face="文鼎PL细上海宋Uni, serif"><br></font>现在存盘为<font face="文鼎PL细上海宋Uni, serif">Hello.c</font>，打开你的终端，并在文件当前目录输入：
</p>
<center>
<table border="0" cellpadding="3" cellspacing="0" width="90%">
    <col width="256">
    <tbody>
        <tr>
            <td width="100%">
            <p><strong>  代码<font face="文鼎PL细上海宋Uni, serif">:</font></strong>  </p>
            </td>
        </tr>
        <tr>
            <td width="100%">
            <p><font face="文鼎PL细上海宋Uni, serif"><br>gcc Hello.c -o
            hello&nbsp; &nbsp; </font>
            </p>
            </td>
        </tr>
    </tbody>
</table>
</center>
<p style="margin-bottom: 0cm;"><font face="文鼎PL细上海宋Uni, serif"><br></font>编译时可能会出现如下警告：<font face="文鼎PL细上海宋Uni, serif">no
newline at and of file </font>，只有在文件结尾添加一个新行就好了。
<font face="文鼎PL细上海宋Uni, serif"><br></font>然后在终端中输入
<font face="文鼎PL细上海宋Uni, serif">./hello
</font>，你就能在终端中看到程序运行结果了。
<font face="文鼎PL细上海宋Uni, serif"><br><br></font>下面来说下<font face="文鼎PL细上海宋Uni, serif">C++</font>是如何编译的
<font face="文鼎PL细上海宋Uni, serif"><br></font>写程序（不用我多说了吧）
</p>
<center>
<table border="0" cellpadding="3" cellspacing="0" width="90%">
    <col width="256">
    <tbody>
        <tr>
            <td width="100%">
            <p><strong>  代码<font face="文鼎PL细上海宋Uni, serif">:</font></strong>  </p>
            </td>
        </tr>
        <tr>
            <td width="100%">
            <p><font face="文鼎PL细上海宋Uni, serif"><br>#include
            &lt;iostream&gt; <br>using namespace std; <br>int main() <br>{ <br>&nbsp;
            &nbsp; cout&lt;&lt;"Hello,World!\n"&lt;&lt;endl; <br>&nbsp;
            &nbsp; return 0; <br>} </font>
            </p>
            </td>
        </tr>
    </tbody>
</table>
</center>
<p style="margin-bottom: 0cm;"><font face="文鼎PL细上海宋Uni, serif"><br></font>存盘为<font face="文鼎PL细上海宋Uni, serif">Hello.cpp
<br></font>使用<font face="文鼎PL细上海宋Uni, serif">gcc</font>编译？？？
不对，这里我们使用<font face="文鼎PL细上海宋Uni, serif">g++</font>来编译<font face="文鼎PL细上海宋Uni, serif">C++</font>程序
</p>
<center>
<table border="0" cellpadding="3" cellspacing="0" width="90%">
    <col width="256">
    <tbody>
        <tr>
            <td width="100%">
            <p><strong>  代码<font face="文鼎PL细上海宋Uni, serif">:</font></strong>  </p>
            </td>
        </tr>
        <tr>
            <td width="100%">
            <p><font face="文鼎PL细上海宋Uni, serif"><br>g++ Hello.cpp
            -o hello </font>
            </p>
            </td>
        </tr>
    </tbody>
</table>
</center>
<p style="margin-bottom: 0cm;"><font face="文鼎PL细上海宋Uni, serif"><br><br></font>编译多个文件我们怎么办？？？
来看下面出了三个文件<font face="文鼎PL细上海宋Uni, serif">Hello.h,
Hello.cpp, MyFirst.cpp </font>
</p>
<center>
<table border="0" cellpadding="3" cellspacing="0" width="90%">
    <col width="256">
    <tbody>
        <tr>
            <td width="100%">
            <p><strong>  代码<font face="文鼎PL细上海宋Uni, serif">:</font></strong>  </p>
            </td>
        </tr>
        <tr>
            <td width="100%">
            <p><font face="文鼎PL细上海宋Uni, serif"><br>//file_NO1:Hello.h
            <br>class Hello { <br>&nbsp; &nbsp; &nbsp;Hello(); <br>&nbsp; &nbsp;
            &nbsp;void Display(); <br>} <br>//file_NO2:Hello.cpp <br>#include
            &lt;iostream&gt; <br>#include "Hello.h" <br>using
            namespace std; <br>Hello::Hello() <br>{ <br>} <br>Hello::Display()
            <br>{ <br>&nbsp; &nbsp; cout&lt;&lt;"Hello,World!\n"&lt;&lt;endl;
            <br>} <br>//file_NO3:MyFirst.cpp <br>#include &lt;iostram&gt;
            <br>#include "Hello.cpp" <br>int main() <br>{ <br>&nbsp;
            &nbsp; Hello theHello; <br>&nbsp; &nbsp; theHello-&gt;Display();
            <br>&nbsp; &nbsp; return 0; <br>} </font>
            </p>
            </td>
        </tr>
    </tbody>
</table>
</center>
<p style="margin-bottom: 0cm;"><font face="文鼎PL细上海宋Uni, serif"><br></font>在<font face="文鼎PL细上海宋Uni, serif">g++</font>中有一个参数<font face="文鼎PL细上海宋Uni, serif">-c
</font>可以只编译不连接，那么我们就可以按如下顺序编译文件，
</p>
<center>
<table border="0" cellpadding="3" cellspacing="0" width="90%">
    <col width="256">
    <tbody>
        <tr>
            <td width="100%">
            <p><strong>  代码<font face="文鼎PL细上海宋Uni, serif">:</font></strong>  </p>
            </td>
        </tr>
        <tr>
            <td width="100%">
            <p><font face="文鼎PL细上海宋Uni, serif"><br>g++ -c
            Hello.cpp -o Hello.o <br>g++ -c MyFirst.cpp -o MyFirst.o <br>g++
            MyFirst.o hello.o -o MyFirst </font>
            </p>
            </td>
        </tr>
    </tbody>
</table>
</center>
<p><font face="文鼎PL细上海宋Uni, serif"><br></font>你是否会问，如果是一个项目的话，可能会有上百个文件，这样的编译法，人不是要累死在电脑前吗，或者等到你编译成功了，岂不是头发都白了，呵呵，所以我们要把上述的编译过程写进以下一个文本文件中：
<font face="文鼎PL细上海宋Uni, serif"><br>Linux</font>下称之为<font face="文鼎PL细上海宋Uni, serif">makefile
<br>[code] <br>#</font>这里可以写一些文件的说明 <font face="文鼎PL细上海宋Uni, serif"><br>MyFirst:
MyFirst.o hello.o <br>g++ MyFirst.o hello.o -o MyFirst
<br>Hello.o:Hello.cpp <br>g++ -c Hello.cpp -o Hello.o
<br>MyFirst.o:MyFirst.cpp <br>g++ -c MyFirst.cpp -o MyFirst.o
<br>[\code] <br></font>存盘为<font face="文鼎PL细上海宋Uni, serif">MyFirst</font>，在终端输入：<font face="文鼎PL细上海宋Uni, serif">make
MyFist
</font>，程序出现了错误可是所有程序员共同的敌人，在编写程序时我们应该尽量的去避免错误的出现，不过编写的时候再怎么都不可避免的出现这样那样的错误，对程序
进行必要的调试是一个好主意，那我们怎么来调试程序呢，看下面：
<font face="文鼎PL细上海宋Uni, serif"><br>[code] <br>gdb ./</font>文件名
<font face="文鼎PL细上海宋Uni, serif">////////////////</font>在这里我修改下要想下面可以调试，在上面编译的<font face="文鼎PL细上海宋Uni, serif">						</font>时候必须加上参数<font face="文鼎PL细上海宋Uni, serif">g</font>，<font face="文鼎PL细上海宋Uni, serif">g++
-g hello.cpp -o hello<br>[/code]
<br></font>以下为调试状态下的可以用到的命令（可以仅输入单词的输入，如<font face="文鼎PL细上海宋Uni, serif">break</font>可简为<font face="文鼎PL细上海宋Uni, serif">b</font>），尖括号中为说明
<font face="文鼎PL细上海宋Uni, serif"><br>[code] <br>list
&lt;</font>显示源代码<font face="文鼎PL细上海宋Uni, serif">&gt;
<br>break </font>行号 <font face="文鼎PL细上海宋Uni, serif">&lt;</font>设置断点<font face="文鼎PL细上海宋Uni, serif">&gt;
<br>run &lt;</font>运行程序<font face="文鼎PL细上海宋Uni, serif">&gt;
<br>continue &lt;</font>继续从断点处执行<font face="文鼎PL细上海宋Uni, serif">&gt;
<br>print </font>变量 <font face="文鼎PL细上海宋Uni, serif">&lt;</font>调试时查看变量的值<font face="文鼎PL细上海宋Uni, serif">&gt;
<br>del </font>行号 <font face="文鼎PL细上海宋Uni, serif">&lt;</font>删除断点<font face="文鼎PL细上海宋Uni, serif">&gt;
<br>step &lt;</font>单步执行，可跟踪到函数内部<font face="文鼎PL细上海宋Uni, serif">&gt;
<br>next &lt;</font>单步执行，不可跟踪到函数内部<font face="文鼎PL细上海宋Uni, serif">&gt;
<br>quit &lt;</font>退出<font face="文鼎PL细上海宋Uni, serif">&gt;
<br>[/code] <br></font></p>
<p><br></p>
原文地址：http://www.cppblog.com/heidaizx/articles/33582.html<img src ="http://www.cppblog.com/qhmao/aggbug/80308.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qhmao/" target="_blank">qhmao</a> 2009-04-17 23:18 <a href="http://www.cppblog.com/qhmao/archive/2009/04/17/80308.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>g++   Hello World </title><link>http://www.cppblog.com/qhmao/archive/2009/04/17/80307.html</link><dc:creator>qhmao</dc:creator><author>qhmao</author><pubDate>Fri, 17 Apr 2009 15:15:00 GMT</pubDate><guid>http://www.cppblog.com/qhmao/archive/2009/04/17/80307.html</guid><wfw:comment>http://www.cppblog.com/qhmao/comments/80307.html</wfw:comment><comments>http://www.cppblog.com/qhmao/archive/2009/04/17/80307.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/qhmao/comments/commentRss/80307.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/qhmao/services/trackbacks/80307.html</trackback:ping><description><![CDATA[#include &lt;iostream&gt;<br>using namespace std;<br>int main()<br>{<br>&nbsp;&nbsp;&nbsp; cout &lt;&lt; "Hello , World \n" &lt;&lt; endl;<br>&nbsp;&nbsp;&nbsp; return 0;<br>}<br><br><br>g++&nbsp; Hello.cpp -o tester<br><br>./tester <br><br> <img src ="http://www.cppblog.com/qhmao/aggbug/80307.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qhmao/" target="_blank">qhmao</a> 2009-04-17 23:15 <a href="http://www.cppblog.com/qhmao/archive/2009/04/17/80307.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>UltraEdit的文件标签不见了.</title><link>http://www.cppblog.com/qhmao/archive/2009/04/08/79236.html</link><dc:creator>qhmao</dc:creator><author>qhmao</author><pubDate>Wed, 08 Apr 2009 01:20:00 GMT</pubDate><guid>http://www.cppblog.com/qhmao/archive/2009/04/08/79236.html</guid><wfw:comment>http://www.cppblog.com/qhmao/comments/79236.html</wfw:comment><comments>http://www.cppblog.com/qhmao/archive/2009/04/08/79236.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/qhmao/comments/commentRss/79236.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/qhmao/services/trackbacks/79236.html</trackback:ping><description><![CDATA[挂 过多次，，，，，，这次要长脑子，写下来。。。。。。。。。。<br><br>点&nbsp;视图-&gt;视图/列表(V)-&gt;打开文件标签(E)
<img src ="http://www.cppblog.com/qhmao/aggbug/79236.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qhmao/" target="_blank">qhmao</a> 2009-04-08 09:20 <a href="http://www.cppblog.com/qhmao/archive/2009/04/08/79236.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>static变量和static函数 </title><link>http://www.cppblog.com/qhmao/archive/2009/03/26/77924.html</link><dc:creator>qhmao</dc:creator><author>qhmao</author><pubDate>Thu, 26 Mar 2009 04:05:00 GMT</pubDate><guid>http://www.cppblog.com/qhmao/archive/2009/03/26/77924.html</guid><wfw:comment>http://www.cppblog.com/qhmao/comments/77924.html</wfw:comment><comments>http://www.cppblog.com/qhmao/archive/2009/03/26/77924.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/qhmao/comments/commentRss/77924.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/qhmao/services/trackbacks/77924.html</trackback:ping><description><![CDATA[<table cellSpacing=0 cellPadding=0 width="80%" align=center border=0>
    <tbody>
        <tr>
            <td style="TABLE-LAYOUT: fixed; WORD-BREAK: break-all" width="100%">在C语言编程中，static的一个作用是信息屏蔽！<br><br>比方说，你自己定义了一个文件&nbsp;--&nbsp;该文件中有一系列的函数以及变量的声明和定义！<br><br>你希望该文件中的一些函数和变量只能被该文件中的函数使用，那么，你可以在该函数、变量的前面加上static，代表他们只能被当前文件中的函数使用！<br><br><br>而在C++中，用static来作为信息屏蔽就显得没有必要了！因为，C++有了信息屏蔽的利器&nbsp;--&nbsp;class机制！<br><br>类中的private属性的变量和函数就对外禁止访问！<br><br><br>然后是C/C++通用的函数作用域的static型的变量！其目的，也是为了信息的屏蔽！<br><br><br>int&nbsp;fun()&nbsp;{<br>&nbsp;&nbsp;&nbsp;static&nbsp;int&nbsp;a&nbsp;=&nbsp;1;<br>&nbsp;&nbsp;&nbsp;a++;<br>}<br><br>在第一次进入这个函数的时候，变量a被初始化为1！并接着自增1！<br><br>以后每次进入该函数，a就不会被再次初始化了，仅进行自增1的操作！<br><br>在static发明前，要达到同样的功能，则只能使用全局变量：<br><br>int&nbsp;a&nbsp;=&nbsp;1;<br><br>int&nbsp;fun()&nbsp;{<br>&nbsp;&nbsp;&nbsp;a++;<br>}<br><br>那么，a的值就有可能被其他函数所改变！<br><br><br><br>最后，说说类中的static变量和函数。<br><br><br>这种存储属性的变量和函数是同一种类的不同实例之间通信的桥梁！<br><br><br>#include&nbsp;&lt;iostream&gt;<br>using&nbsp;namespace&nbsp;std;<br><br>class&nbsp;A&nbsp;{<br>public:<br>&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;int&nbsp;num;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;统计创建了多少个实例<br>&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;()&nbsp;{num++};&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;每创建一个实例，就让num自增1<br><br>&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;返回通过构造函数所创建过的A类实例的数目<br>&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;int&nbsp;how_many_instance()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;num;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>}<br><br>static&nbsp;A::num&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;&nbsp;&nbsp;&nbsp;需要在类申明的外部单独初始化！<br><br><br>int&nbsp;main()&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;&nbsp;A::how_many_instance()&nbsp;&lt;&lt;&nbsp;endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;A&nbsp;a,&nbsp;b,&nbsp;c,&nbsp;d;<br>&nbsp;&nbsp;&nbsp;&nbsp;cout&nbsp;&lt;&lt;&nbsp;A::how_many_instance()&nbsp;&lt;&lt;&nbsp;endl;<br>&nbsp;&nbsp;&nbsp;&nbsp;system("pause");<br>}<br><br><br>一般，在类内部，是通过static属性的函数，访问static属性的变量！ <br><br>补充一点，在类中，static型的成员函数，由于是类所拥有的，而不是具体对象所有的，这一点对于windows的回调机制非常有用。<br>因为对于回调函数而言，windows不会借助任何对象去调用它，也就不会传递this指针，那么对于一般成员函数作为回调函数的后果，就是堆栈中有一个随机的变量会成为this指针，这当然会引发程序的崩溃。<br>而static函数，由于是整个类的，屏蔽了this指针。因此，如果成员函数作为回调函数，就应该用static去修饰它。<br><span style="COLOR: red">（引用，原文：</span><a href="http://www.cppblog.com/dbkong/archive/2009/03/02/16169.html"><span style="COLOR: red"><strong>http://www.cppblog.com/dbkong/archive/2009/03/02/16169.html</strong></span></a><span style="COLOR: red">）</span></td>
        </tr>
    </tbody>
</table>
<img src ="http://www.cppblog.com/qhmao/aggbug/77924.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qhmao/" target="_blank">qhmao</a> 2009-03-26 12:05 <a href="http://www.cppblog.com/qhmao/archive/2009/03/26/77924.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>