﻿<?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++博客-Sivan's blog-随笔分类-C/C++</title><link>http://www.cppblog.com/sivan/category/15002.html</link><description>用代码说话……</description><language>zh-cn</language><lastBuildDate>Fri, 29 Apr 2011 01:11:20 GMT</lastBuildDate><pubDate>Fri, 29 Apr 2011 01:11:20 GMT</pubDate><ttl>60</ttl><item><title>[学]const及表驱动</title><link>http://www.cppblog.com/sivan/archive/2010/12/06/135624.html</link><dc:creator>Sivan</dc:creator><author>Sivan</author><pubDate>Mon, 06 Dec 2010 14:17:00 GMT</pubDate><guid>http://www.cppblog.com/sivan/archive/2010/12/06/135624.html</guid><wfw:comment>http://www.cppblog.com/sivan/comments/135624.html</wfw:comment><comments>http://www.cppblog.com/sivan/archive/2010/12/06/135624.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/sivan/comments/commentRss/135624.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/sivan/services/trackbacks/135624.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 看了《金山卫士代码批评》一文，发现了一些自己存在的问题。1.const使用1.1 const修饰参数1）参数为输出参数，不论什么数据类型，不论什么参数传递方式，都不加const。2）输入参数&#8220;指针传递&#8221;，加const防止改动指针。3）输入参数&#8220;值传递&#8221;，内置类型，参数不加const修饰，非内置类型，常使用引用传递，如果不想改变参数，加const修饰，...&nbsp;&nbsp;<a href='http://www.cppblog.com/sivan/archive/2010/12/06/135624.html'>阅读全文</a><img src ="http://www.cppblog.com/sivan/aggbug/135624.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sivan/" target="_blank">Sivan</a> 2010-12-06 22:17 <a href="http://www.cppblog.com/sivan/archive/2010/12/06/135624.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>简陋的C++画图程序</title><link>http://www.cppblog.com/sivan/archive/2010/10/25/131210.html</link><dc:creator>Sivan</dc:creator><author>Sivan</author><pubDate>Mon, 25 Oct 2010 09:11:00 GMT</pubDate><guid>http://www.cppblog.com/sivan/archive/2010/10/25/131210.html</guid><wfw:comment>http://www.cppblog.com/sivan/comments/131210.html</wfw:comment><comments>http://www.cppblog.com/sivan/archive/2010/10/25/131210.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/sivan/comments/commentRss/131210.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/sivan/services/trackbacks/131210.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/sivan/archive/2010/10/25/131210.html'>阅读全文</a><img src ="http://www.cppblog.com/sivan/aggbug/131210.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sivan/" target="_blank">Sivan</a> 2010-10-25 17:11 <a href="http://www.cppblog.com/sivan/archive/2010/10/25/131210.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>指针与字符常量</title><link>http://www.cppblog.com/sivan/archive/2010/09/24/127514.html</link><dc:creator>Sivan</dc:creator><author>Sivan</author><pubDate>Fri, 24 Sep 2010 08:15:00 GMT</pubDate><guid>http://www.cppblog.com/sivan/archive/2010/09/24/127514.html</guid><wfw:comment>http://www.cppblog.com/sivan/comments/127514.html</wfw:comment><comments>http://www.cppblog.com/sivan/archive/2010/09/24/127514.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/sivan/comments/commentRss/127514.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/sivan/services/trackbacks/127514.html</trackback:ping><description><![CDATA[先看一个代码<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #008080">&nbsp;1</span><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">stdafx.h</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">#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></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img id=Codehighlighter1_73_142_Open_Image onclick="this.style.display='none'; Codehighlighter1_73_142_Open_Text.style.display='none'; Codehighlighter1_73_142_Closed_Image.style.display='inline'; Codehighlighter1_73_142_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_73_142_Closed_Image onclick="this.style.display='none'; Codehighlighter1_73_142_Closed_Text.style.display='none'; Codehighlighter1_73_142_Open_Image.style.display='inline'; Codehighlighter1_73_142_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_73_142_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_73_142_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pch&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">aaa</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;pch[</span><span style="COLOR: #000000">2</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">b</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">pch</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
运行这几行代码，程序会崩溃。将指针pch指向&#8220;aaa&#8221;，而&#8220;aaa&#8221;是个字符串常量，后对pch[2]进行修改，赋值操作不合法，程序崩溃。<br>c++中内存分为5个区域：堆、栈、自由存储区、全局/静态存储区和常量存储区。<br>堆、栈不说啦，自由存储区与堆类似，不过使用malloc分配free释放，全局/静态存储区存储全局变量和static变量，常量存储区存放的是常量，不允许修改，&#8220;aaa&#8221;就存储在这个位置。<br>将代码改为如下情况：<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;str[]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">aaa</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pch&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;str;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">pch[</span><span style="COLOR: #000000">2</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">b</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">cout</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">pch</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;</span></div>
此时&#8220;aaa&#8221;为栈分配，是数组中的存储内容，所以可以修改。
<img src ="http://www.cppblog.com/sivan/aggbug/127514.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sivan/" target="_blank">Sivan</a> 2010-09-24 16:15 <a href="http://www.cppblog.com/sivan/archive/2010/09/24/127514.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]static的三个作用</title><link>http://www.cppblog.com/sivan/archive/2010/09/22/127353.html</link><dc:creator>Sivan</dc:creator><author>Sivan</author><pubDate>Wed, 22 Sep 2010 12:47:00 GMT</pubDate><guid>http://www.cppblog.com/sivan/archive/2010/09/22/127353.html</guid><wfw:comment>http://www.cppblog.com/sivan/comments/127353.html</wfw:comment><comments>http://www.cppblog.com/sivan/archive/2010/09/22/127353.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/sivan/comments/commentRss/127353.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/sivan/services/trackbacks/127353.html</trackback:ping><description><![CDATA[(1)隐藏<br>在模块内，被声明为静态的全局变量和函数只能被这一模块内的其他函数调用，所有未加static前缀的全局变量和函数都具有全局可见性。静态的全局变量和函数会对其他模块进行隐藏。<br>(2)保持变量内容的持久性<br>函数体内的static变量，在程序开始运行时就完成初始化，存储在程序静态数据区。函数在被调用的过程中，静态变量保持内容的持久性。<br>(3)默认初始化为0<br>静态变量和全局变量同时具备这一属性。在静态存储区，所有的字节默认值都是0x00。<br><a href="http://tech.sina.com.cn/roll/2008-12-28/0933936834.shtml">http://tech.sina.com.cn/roll/2008-12-28/0933936834.shtml</a> 
<img src ="http://www.cppblog.com/sivan/aggbug/127353.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/sivan/" target="_blank">Sivan</a> 2010-09-22 20:47 <a href="http://www.cppblog.com/sivan/archive/2010/09/22/127353.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>