﻿<?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++博客-Q's Playground-最新评论</title><link>http://www.cppblog.com/qjbest/CommentsRSS.aspx</link><description>MAX MAGIC</description><language>zh-cn</language><pubDate>Wed, 06 Sep 2006 07:39:37 GMT</pubDate><lastBuildDate>Wed, 06 Sep 2006 07:39:37 GMT</lastBuildDate><generator>cnblogs</generator><item><title>re: swap()引起的指针思考</title><link>http://www.cppblog.com/qjbest/archive/2006/05/31/7621.html#8003</link><dc:creator>Q</dc:creator><author>Q</author><pubDate>Wed, 31 May 2006 15:39:00 GMT</pubDate><guid>http://www.cppblog.com/qjbest/archive/2006/05/31/7621.html#8003</guid><description><![CDATA[我想我是明白你的意思了。其实我们说的都是一样的，swap里的int *x,*y是临时的。只要不对指针所指向的值做更改，在swap里无论怎么更改x,y的值，对于外部来说，都是徒劳的。不知道你是不是也是这个意思？<img src ="http://www.cppblog.com/qjbest/aggbug/8003.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qjbest/" target="_blank">Q</a> 2006-05-31 23:39 <a href="http://www.cppblog.com/qjbest/archive/2006/05/31/7621.html#8003#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: 无语</title><link>http://www.cppblog.com/qjbest/archive/2006/05/27/7702.html#7746</link><dc:creator>beyonlin</dc:creator><author>beyonlin</author><pubDate>Sat, 27 May 2006 15:22:00 GMT</pubDate><guid>http://www.cppblog.com/qjbest/archive/2006/05/27/7702.html#7746</guid><description><![CDATA[暑假是一个很好的学习机会~~<img src ="http://www.cppblog.com/qjbest/aggbug/7746.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qjbest/" target="_blank">beyonlin</a> 2006-05-27 23:22 <a href="http://www.cppblog.com/qjbest/archive/2006/05/27/7702.html#7746#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: swap()引起的指针思考</title><link>http://www.cppblog.com/qjbest/archive/2006/05/27/7621.html#7720</link><dc:creator>任我行</dc:creator><author>任我行</author><pubDate>Sat, 27 May 2006 01:20:00 GMT</pubDate><guid>http://www.cppblog.com/qjbest/archive/2006/05/27/7621.html#7720</guid><description><![CDATA[我把方法一按编译后伪代码重写一下：<br>这个写法，你可以参考一下《高质量C/C++》<br>int *p;<br>void swap(int *x,int *y) <br>{<br>int *_x = x;//原来函数内的x都被替换为_x<br>int *_y = y;<br> cout&lt;&lt;&quot;swap(&quot;&lt;&lt;*_x&lt;&lt;&quot;,&quot;&lt;&lt;*_y&lt;&lt;&quot;)&quot;&lt;&lt;endl;<br> p=_x;<br> _x=_y;<br> _y=p;<br> cout&lt;&lt;&quot;swap(&quot;&lt;&lt;*_x&lt;&lt;&quot;,&quot;&lt;&lt;*_y&lt;&lt;&quot;)&quot;&lt;&lt;endl;<br>}<br>其他观点都一样。<br>我再说一下的是：x,y的值和x,y的地址是不一样的。<img src ="http://www.cppblog.com/qjbest/aggbug/7720.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qjbest/" target="_blank">任我行</a> 2006-05-27 09:20 <a href="http://www.cppblog.com/qjbest/archive/2006/05/27/7621.html#7720#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: swap()引起的指针思考</title><link>http://www.cppblog.com/qjbest/archive/2006/05/26/7621.html#7695</link><dc:creator>Q</dc:creator><author>Q</author><pubDate>Fri, 26 May 2006 07:10:00 GMT</pubDate><guid>http://www.cppblog.com/qjbest/archive/2006/05/26/7621.html#7695</guid><description><![CDATA[任我行兄如果有兴趣的话，我们可以继续讨论 :)<br>方法三：<br>通过int *&amp;x,int *&amp;y<br>&amp;的作用和指针一样，但是它是直接作用于实参x,y上(在本例中)<br>p=x;<br>x=y;<br>y=p;<br>这个时候在swap()中的操作其实是完全对实参x,y的操作了，也就是把外部x,y所指向的地址相互交换了一下。所以，在main()中使用*x,*y得到的结果为2，10的时候，其实使用了上面临近评论里的意思：用了个障眼法！其实这个时候在main()中的*x,*y好比之前真正的*y,*x（说白了a,b所在地址和数值完全没改变）不知道任我行兄能否理解我的意思？<img src ="http://www.cppblog.com/qjbest/aggbug/7695.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qjbest/" target="_blank">Q</a> 2006-05-26 15:10 <a href="http://www.cppblog.com/qjbest/archive/2006/05/26/7621.html#7695#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: swap()引起的指针思考</title><link>http://www.cppblog.com/qjbest/archive/2006/05/26/7621.html#7694</link><dc:creator>Q</dc:creator><author>Q</author><pubDate>Fri, 26 May 2006 06:33:00 GMT</pubDate><guid>http://www.cppblog.com/qjbest/archive/2006/05/26/7621.html#7694</guid><description><![CDATA[继续。<br>方法一：<br><br>p=x;<br>x=y;<br>y=p;<br>cout&lt;&lt;*x&lt;&lt;&quot; &quot;&lt;&lt;*y&lt;&lt;endl;<br>//得出的结果为 2,10<br>//那是因为x,y交换了分别指向的地址而已，所以从表面上看以为是更改了a,b地址的内容，其实什么也没变，现在的*x其实就是之前的y指向地址的实际数值，同样y也是<img src ="http://www.cppblog.com/qjbest/aggbug/7694.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qjbest/" target="_blank">Q</a> 2006-05-26 14:33 <a href="http://www.cppblog.com/qjbest/archive/2006/05/26/7621.html#7694#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: swap()引起的指针思考</title><link>http://www.cppblog.com/qjbest/archive/2006/05/26/7621.html#7692</link><dc:creator>Q</dc:creator><author>Q</author><pubDate>Fri, 26 May 2006 06:23:00 GMT</pubDate><guid>http://www.cppblog.com/qjbest/archive/2006/05/26/7621.html#7692</guid><description><![CDATA[是我没有说明白，方法一交换了地址，不过是交换了零时值而已，不会影响到外面。<br>---------------------------------------------------<br>方法一并没有交换临时数值（我说的这个临时数值不是a,b的地址，而是a,b的实际数值）。临时指针x,y可以指向任何地址，也就是说现在x指向a所在地址，等下也可以指向b所在地址，有什么关系呢？我x不解引用，不做为右值，那就不会改变a,b所在地址内的实际数值。<img src ="http://www.cppblog.com/qjbest/aggbug/7692.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qjbest/" target="_blank">Q</a> 2006-05-26 14:23 <a href="http://www.cppblog.com/qjbest/archive/2006/05/26/7621.html#7692#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: swap()引起的指针思考</title><link>http://www.cppblog.com/qjbest/archive/2006/05/26/7621.html#7691</link><dc:creator>Q</dc:creator><author>Q</author><pubDate>Fri, 26 May 2006 06:19:00 GMT</pubDate><guid>http://www.cppblog.com/qjbest/archive/2006/05/26/7621.html#7691</guid><description><![CDATA[“怎样利用swap(int *x,int *y)交换x,y指向的地址值”，也就是a,b的内存地址。 <br><br>你能交换a,b的内存地址么，不能。你要交换的是x,y的值。而不是交换a,b内存的值。<br>--------------------------------------------------------<br>不明白你的意思？<br>但是我想说下，如果方法四中不是交换了a,b的内存值，那你看到的会是什么结果？<img src ="http://www.cppblog.com/qjbest/aggbug/7691.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qjbest/" target="_blank">Q</a> 2006-05-26 14:19 <a href="http://www.cppblog.com/qjbest/archive/2006/05/26/7621.html#7691#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: swap()引起的指针思考</title><link>http://www.cppblog.com/qjbest/archive/2006/05/26/7621.html#7687</link><dc:creator>任我行</dc:creator><author>任我行</author><pubDate>Fri, 26 May 2006 05:19:00 GMT</pubDate><guid>http://www.cppblog.com/qjbest/archive/2006/05/26/7621.html#7687</guid><description><![CDATA[是我没有说明白，方法一交换了地址，不过是交换了零时值而已，不会影响到外面。<br><br>“临时指针x,y所指向的 a,b的内存地址”和“指针x,y的地址”是两码事。<br><br>“怎样利用swap(int *x,int *y)交换x,y指向的地址值”，也就是a,b的内存地址。<br><br>你能交换a,b的内存地址么，不能。你要交换的是x,y的值。而不是交换a,b内存的值。<br><br><img src ="http://www.cppblog.com/qjbest/aggbug/7687.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qjbest/" target="_blank">任我行</a> 2006-05-26 13:19 <a href="http://www.cppblog.com/qjbest/archive/2006/05/26/7621.html#7687#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: swap()引起的指针思考</title><link>http://www.cppblog.com/qjbest/archive/2006/05/26/7621.html#7679</link><dc:creator>Q</dc:creator><author>Q</author><pubDate>Fri, 26 May 2006 03:25:00 GMT</pubDate><guid>http://www.cppblog.com/qjbest/archive/2006/05/26/7621.html#7679</guid><description><![CDATA[这也就是方法四能够正确执行的原因：只要临时指针x没有解引用，没有对所指向的地址的内容进行操作，则不管x 指向哪里，以前地址里的内容仍然不会改变！<img src ="http://www.cppblog.com/qjbest/aggbug/7679.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qjbest/" target="_blank">Q</a> 2006-05-26 11:25 <a href="http://www.cppblog.com/qjbest/archive/2006/05/26/7621.html#7679#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>re: swap()引起的指针思考</title><link>http://www.cppblog.com/qjbest/archive/2006/05/26/7621.html#7678</link><dc:creator>Q</dc:creator><author>Q</author><pubDate>Fri, 26 May 2006 03:24:00 GMT</pubDate><guid>http://www.cppblog.com/qjbest/archive/2006/05/26/7621.html#7678</guid><description><![CDATA[to 任我行：<br>我说的交换地址是指 “临时指针x,y所指向的 a,b的内存地址”，并非“指针x,y的地址！”。从方法一中可以看到，临时指针x起先指向a的地址，之后改为指向b的地址，指针的特性就是可以指向任何地址，但是只要临时指针x没有解引用，没有对所指向的地址的内容进行操作，则不管x 指向哪里，以前地址里的内容仍然不会改变：a的数值仍然是以前的，b的数值也仍然是以前的。<img src ="http://www.cppblog.com/qjbest/aggbug/7678.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/qjbest/" target="_blank">Q</a> 2006-05-26 11:24 <a href="http://www.cppblog.com/qjbest/archive/2006/05/26/7621.html#7678#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>