<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[观夏Note]]></title> 
<link>//gm.angeldm.com/index.php</link> 
<description><![CDATA[新技术番]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[观夏Note]]></copyright>
<item>
<link>//gm.angeldm.com/post//</link>
<title><![CDATA[如何获取char* 指针的地址]]></title> 
<author>果面 &lt;admin@yourname.com&gt;</author>
<category><![CDATA[程序开发]]></category>
<pubDate>Thu, 24 Nov 2011 13:15:07 +0000</pubDate> 
<guid>//gm.angeldm.com/post//</guid> 
<description>
<![CDATA[ 
	输出char*指针得到的只是它指向的内容<br/><div class="code"><br/>void getAddr()<br/>&#123;<br/>&nbsp;&nbsp;char a&#91;8&#93; = &#123;&#039;1&#039;,&#039;2&#039;,&#039;3&#039;,&#039;4&#039;,&#039;5&#039;,&#039;6&#039;,&#039;7&#039;,&#039;8&#039;&#125;;<br/>&nbsp;&nbsp;char *cp = a; <br/>&nbsp;&nbsp;cout&lt;&lt;a&lt;&lt;endl;<br/>&nbsp;&nbsp;cout&lt;&lt;&amp;a&#91;0&#93;&lt;&lt;endl;<br/>&nbsp;&nbsp;cout&lt;&lt;&amp;(*cp)&lt;&lt;endl;<br/>&nbsp;&nbsp; <br/>&nbsp;&nbsp;//下面两句输出&#91;separator&#93;的应该不是a和cp的地址吧？<br/>&nbsp;&nbsp;cout&lt;&lt;&amp;cp&lt;&lt;endl;<br/>&nbsp;&nbsp;cout&lt;&lt;&amp;a&lt;&lt;endl;<br/><br/>&#125;<br/>compiler: C++<br/>result:<br/>12345678x &quot;&nbsp;&nbsp;<br/>12345678x &quot;<br/>12345678x &quot;<br/>0x22ff4c<br/>0x22ff50<br/></div><br/>=================================================<br/>cp里面存的就是a[8]的地址，<br/>a也是a[8]的地址，<br/>用：&a[0]也没有错；<br/><br/>而cp本来就是一个指针，它指向一个变量的地址，&cp就是取的cp这个指针变量的地址了；<br/>a就是字符数组的地址，&a就是字符数组地址的地址；<br/>==================================================<br/><div class="code">cout &lt;&lt; (void *)cp;</div><br/><br/>==================================================<br/><br/><div class="code">cout &lt; &lt;&amp;cp &lt; &lt;endl; cp这个变量的地址<br/><br/>cout &lt; &lt;&amp;a &lt; &lt;endl; a数组这个对象的地址</div><br/><br/>===================================================<br/>需要采用cout<<(void*)cp<<才能得到cp的地址<br/><div class="code">&nbsp;&nbsp;char a&#91;8&#93; = &quot;Hello&quot;;<br/>&nbsp;&nbsp;char *cp = a;<br/><br/>&nbsp;&nbsp;cout&lt;&lt;a&lt;&lt;endl;<br/>&nbsp;&nbsp;cout&lt;&lt;&amp;a&#91;0&#93;&lt;&lt;endl; //和上句一样<br/>&nbsp;&nbsp;cout&lt;&lt;(void*)cp&lt;&lt;endl; //char*比较特殊，需要这样才能输出<br/>&nbsp;&nbsp;cout&lt;&lt;*cp&lt;&lt;endl;&nbsp;&nbsp;<br/>&nbsp;&nbsp;cout&lt;&lt;&amp;a&lt;&lt;endl; //这个就是数组a的实际地址了 = (void*)cp同<br/>&nbsp;&nbsp;cout&lt;&lt;&amp;cp&lt;&lt;endl; //这个应该是地址的地址，因为cp本身已经是一个指针<br/><br/>result:<br/>Hello<br/>Hello<br/>0x22ff50<br/>H<br/>0x22ff50<br/>0x22ff4c</div><br/><br/>====================================================<br/>只要在打印的时候把cp的类型强制转换为非char*类型就行了，并不是一定要void*的，例如：<br/><br/><div class="code">cout &lt; &lt;(int*)cp &lt; &lt;endl; 或cout &lt; &lt;(float*)cp &lt; &lt;endl;</div><br/>都可以。只有在char*类型下才会打印cp指向的字符串内容。<br/><br/>&a不是字符数组地址的地址，&a的意义是对数组a这个对象取地址，类型是int(*)[8]，a这个标识符本身不是个变量，更不是对象，是没有地址的。<br/><br/>
]]>
</description>
</item><item>
<link>//gm.angeldm.com/read.php?&amp;guid=0#topreply</link>
<title><![CDATA[[评论] 如何获取char* 指针的地址]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>//gm.angeldm.com/read.php?&amp;guid=0#topreply</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>