﻿<?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++博客-Dragon-随笔分类-C++</title><link>http://www.cppblog.com/dragon/category/8159.html</link><description>Dragon</description><language>zh-cn</language><lastBuildDate>Sat, 01 Jan 2011 20:06:39 GMT</lastBuildDate><pubDate>Sat, 01 Jan 2011 20:06:39 GMT</pubDate><ttl>60</ttl><item><title>offset(type,member)的探讨</title><link>http://www.cppblog.com/dragon/archive/2011/01/01/137828.html</link><dc:creator>Dragon</dc:creator><author>Dragon</author><pubDate>Sat, 01 Jan 2011 03:00:00 GMT</pubDate><guid>http://www.cppblog.com/dragon/archive/2011/01/01/137828.html</guid><wfw:comment>http://www.cppblog.com/dragon/comments/137828.html</wfw:comment><comments>http://www.cppblog.com/dragon/archive/2011/01/01/137828.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dragon/comments/commentRss/137828.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dragon/services/trackbacks/137828.html</trackback:ping><description><![CDATA[<p>这代码是参照别人的文章写的，只供自己理解用，有兴趣的也可以看看。<br>地址：<a href="http://eulertao.ycool.com/post.1762422.html">http://eulertao.ycool.com/post.1762422.html</a><br>#include &lt;cstdlib&gt;<br>#include &lt;iostream&gt;<br>using namespace std;<br>#define offset(type,member) ((int)&amp;(((type*)0)-&gt;member))<br>/*<br>即假设0地址是s类型的一个实例，则成员变量m的地址应该是？<br>应为起始地址是0，所以求出的地址也就可以直接看作是偏移量<br>*/<br>typedef void func(char *);</p>
<p>typedef struct mystu<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; char * str;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; func * f;<br>}mystu_t;</p>
<p>void print(char * str)<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp; printf("[%s]\n",str);<br>}</p>
<p>int main(int argc, char *argv[])<br>{<br>&nbsp;&nbsp;&nbsp; mystu_t t;<br>&nbsp;&nbsp;&nbsp; t.str="This is a expriment";<br>&nbsp;&nbsp;&nbsp; t.f=print;<br>&nbsp;&nbsp;&nbsp; int offs=offset(mystu_t,f);<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; printf("&amp;t=0x%x &amp;t.f=0x%x offset=%d t.f=0x%x &amp;print=0x%x\n",&amp;t,&amp;t.f,offs,t.f,&amp;print);<br>&nbsp;&nbsp;&nbsp; //t.f是函数在内存的实际地址，而&amp;(t.f)是t中保存这个函数地址的地址。<br>&nbsp;&nbsp;&nbsp; /*<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;t-------&gt; -------------- 地址 --&gt;0x22ff70 在我编译平台&amp;t为:0x22ff70<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; char*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |内容 --&gt;"This is a expriment"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;t.f-----&gt; -------------- 地址 --&gt;0x22ff74 在我编译平台&amp;t.f为:0x22ff74<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; func*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |内容 --&gt;0x401390 是t.f(print)的实际地址,在我编译平台t.f为:0x401390 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --------------<br>&nbsp;&nbsp;&nbsp;&nbsp; */ <br>&nbsp;&nbsp;&nbsp; func * f1=*(func**)(((int)&amp;t)+offs);//t+offs是t.f的地址,那就是func * 的地址 ，int起以转值的作用 <br>&nbsp;&nbsp;&nbsp; /*<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;t-----------------&gt; -------------- 地址 --&gt;0x22ff70 在我编译平台&amp;t为:0x22ff70<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; char*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |内容 --&gt;"This is a expriment"<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ((int)&amp;t)+offs-----&gt; -------------- 地址 --&gt;0x22ff74 在我编译平台&amp;t.f为:0x22ff74<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp; func*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |内容 --&gt;0x401390 是t.f(print)的实际地址,在我编译平台t.f为:0x401390 <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; --------------<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以看出 ((int)&amp;t)+offs就是保存print地址的地址，但编译器不能直接用*对它取值，<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我们知道了它是print地址的地址后，就可以将它强制转换成func **,然后对它取值，就是func * <br>&nbsp;&nbsp;&nbsp;&nbsp; */<br>&nbsp;&nbsp;&nbsp; printf("real func addr = 0x%x\n", f1);<br>&nbsp;&nbsp;&nbsp; f1(t.str);<br>&nbsp;&nbsp;&nbsp; system("PAUSE");<br>&nbsp;&nbsp;&nbsp; return EXIT_SUCCESS;<br>}<br>文件在这里，下载来看比较清楚：<br><a title=代码文件 href="http://www.cppblog.com/Files/dragon/main.rar">代码文件</a></p>
<img src ="http://www.cppblog.com/dragon/aggbug/137828.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dragon/" target="_blank">Dragon</a> 2011-01-01 11:00 <a href="http://www.cppblog.com/dragon/archive/2011/01/01/137828.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Base64加密解密从Live555中提取(C++)</title><link>http://www.cppblog.com/dragon/archive/2010/12/14/136375.html</link><dc:creator>Dragon</dc:creator><author>Dragon</author><pubDate>Tue, 14 Dec 2010 06:10:00 GMT</pubDate><guid>http://www.cppblog.com/dragon/archive/2010/12/14/136375.html</guid><wfw:comment>http://www.cppblog.com/dragon/comments/136375.html</wfw:comment><comments>http://www.cppblog.com/dragon/archive/2010/12/14/136375.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dragon/comments/commentRss/136375.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dragon/services/trackbacks/136375.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: /**//*&nbsp;*Base64Coder.h&nbsp;*/#ifndef&nbsp;BASE64CODER_H#define&nbsp;BASE64CODER_H#include&nbsp;&lt;string.h&gt;#ifdef&nbsp;&nbsp;&nbsp;__BORLANDC__#define&nbsp;Boolean&nbsp;bool#define&nbsp;False...&nbsp;&nbsp;<a href='http://www.cppblog.com/dragon/archive/2010/12/14/136375.html'>阅读全文</a><img src ="http://www.cppblog.com/dragon/aggbug/136375.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dragon/" target="_blank">Dragon</a> 2010-12-14 14:10 <a href="http://www.cppblog.com/dragon/archive/2010/12/14/136375.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>成员函数指针是否用typedef的区别</title><link>http://www.cppblog.com/dragon/archive/2010/12/02/135256.html</link><dc:creator>Dragon</dc:creator><author>Dragon</author><pubDate>Thu, 02 Dec 2010 03:35:00 GMT</pubDate><guid>http://www.cppblog.com/dragon/archive/2010/12/02/135256.html</guid><wfw:comment>http://www.cppblog.com/dragon/comments/135256.html</wfw:comment><comments>http://www.cppblog.com/dragon/archive/2010/12/02/135256.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dragon/comments/commentRss/135256.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dragon/services/trackbacks/135256.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 id=Codehighlighter1_0_42_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_42_Open_Text.style.display='none'; Codehighlighter1_0_42_Closed_Image.style.display='inline'; Codehighlighter1_0_42_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_0_42_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_42_Closed_Text.style.display='none'; Codehighlighter1_0_42_Open_Image.style.display='inline'; Codehighlighter1_0_42_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span id=Codehighlighter1_0_42_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">/**/</span><span id=Codehighlighter1_0_42_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;*测试成员函数指针的小程序,有typedef与没有typedef的区别<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.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.cppblog.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.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Test<br><img id=Codehighlighter1_97_373_Open_Image onclick="this.style.display='none'; Codehighlighter1_97_373_Open_Text.style.display='none'; Codehighlighter1_97_373_Closed_Image.style.display='inline'; Codehighlighter1_97_373_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_97_373_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_97_373_Closed_Text.style.display='none'; Codehighlighter1_97_373_Open_Image.style.display='inline'; Codehighlighter1_97_373_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_97_373_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_97_373_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;Test();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">Test();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br><img id=Codehighlighter1_148_157_Open_Image onclick="this.style.display='none'; Codehighlighter1_148_157_Open_Text.style.display='none'; Codehighlighter1_148_157_Closed_Image.style.display='inline'; Codehighlighter1_148_157_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_148_157_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_148_157_Closed_Text.style.display='none'; Codehighlighter1_148_157_Open_Image.style.display='inline'; Codehighlighter1_148_157_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;add5()</span><span id=Codehighlighter1_148_157_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_148_157_Open_Text><span style="COLOR: #000000">{&nbsp;res</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_171_180_Open_Image onclick="this.style.display='none'; Codehighlighter1_171_180_Open_Text.style.display='none'; Codehighlighter1_171_180_Closed_Image.style.display='inline'; Codehighlighter1_171_180_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_171_180_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_171_180_Closed_Text.style.display='none'; Codehighlighter1_171_180_Open_Image.style.display='inline'; Codehighlighter1_171_180_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;add6()</span><span id=Codehighlighter1_171_180_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_171_180_Open_Text><span style="COLOR: #000000">{&nbsp;res</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;(Test::</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">add_5)();</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">现在add_5是一个类型了</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;add_5&nbsp;p_add_5;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">p_add_5才是一个函数指针</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;(Test::</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">add_6)();</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">现在add_6是一个函数指针变量</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;DoAddAction();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Display();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;res;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Test::Test()<br><img id=Codehighlighter1_391_473_Open_Image onclick="this.style.display='none'; Codehighlighter1_391_473_Open_Text.style.display='none'; Codehighlighter1_391_473_Closed_Image.style.display='inline'; Codehighlighter1_391_473_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_391_473_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_391_473_Closed_Text.style.display='none'; Codehighlighter1_391_473_Open_Image.style.display='inline'; Codehighlighter1_391_473_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_391_473_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_391_473_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;p_add_5</span><span style="COLOR: #000000">=&amp;</span><span style="COLOR: #000000">Test::add5;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">注意这里的写法</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;add_6</span><span style="COLOR: #000000">=&amp;</span><span style="COLOR: #000000">Test::add6;&nbsp;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">无论在类外还是类内，这个&amp;都不能少</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;res</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Test::</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">Test()<br><img id=Codehighlighter1_490_493_Open_Image onclick="this.style.display='none'; Codehighlighter1_490_493_Open_Text.style.display='none'; Codehighlighter1_490_493_Closed_Image.style.display='inline'; Codehighlighter1_490_493_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_490_493_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_490_493_Closed_Text.style.display='none'; Codehighlighter1_490_493_Open_Image.style.display='inline'; Codehighlighter1_490_493_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_490_493_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_490_493_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Test::DoAddAction()<br><img id=Codehighlighter1_521_592_Open_Image onclick="this.style.display='none'; Codehighlighter1_521_592_Open_Text.style.display='none'; Codehighlighter1_521_592_Closed_Image.style.display='inline'; Codehighlighter1_521_592_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_521_592_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_521_592_Closed_Text.style.display='none'; Codehighlighter1_521_592_Open_Image.style.display='inline'; Codehighlighter1_521_592_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_521_592_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_521_592_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">-&gt;*</span><span style="COLOR: #000000">p_add_5)();</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">使用类成员函数指针必须有&#8220;-&gt;*&#8221;或&#8220;.*&#8221;的调用</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">-&gt;*</span><span style="COLOR: #000000">add_6)();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Test::Display()<br><img id=Codehighlighter1_616_651_Open_Image onclick="this.style.display='none'; Codehighlighter1_616_651_Open_Text.style.display='none'; Codehighlighter1_616_651_Closed_Image.style.display='inline'; Codehighlighter1_616_651_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_616_651_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_616_651_Closed_Text.style.display='none'; Codehighlighter1_616_651_Open_Image.style.display='inline'; Codehighlighter1_616_651_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_616_651_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_616_651_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.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;res&nbsp;is:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">res</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_665_757_Open_Image onclick="this.style.display='none'; Codehighlighter1_665_757_Open_Text.style.display='none'; Codehighlighter1_665_757_Closed_Image.style.display='inline'; Codehighlighter1_665_757_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_665_757_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_665_757_Closed_Text.style.display='none'; Codehighlighter1_665_757_Open_Image.style.display='inline'; Codehighlighter1_665_757_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_665_757_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_665_757_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;Test&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;test</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Test();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;test</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">DoAddAction();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;test</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Display();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;test;<br><img src="http://www.cppblog.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.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<img src ="http://www.cppblog.com/dragon/aggbug/135256.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dragon/" target="_blank">Dragon</a> 2010-12-02 11:35 <a href="http://www.cppblog.com/dragon/archive/2010/12/02/135256.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>成员函数指针数组</title><link>http://www.cppblog.com/dragon/archive/2010/12/02/135250.html</link><dc:creator>Dragon</dc:creator><author>Dragon</author><pubDate>Thu, 02 Dec 2010 03:04:00 GMT</pubDate><guid>http://www.cppblog.com/dragon/archive/2010/12/02/135250.html</guid><wfw:comment>http://www.cppblog.com/dragon/comments/135250.html</wfw:comment><comments>http://www.cppblog.com/dragon/archive/2010/12/02/135250.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dragon/comments/commentRss/135250.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dragon/services/trackbacks/135250.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 id=Codehighlighter1_0_22_Open_Image onclick="this.style.display='none'; Codehighlighter1_0_22_Open_Text.style.display='none'; Codehighlighter1_0_22_Closed_Image.style.display='inline'; Codehighlighter1_0_22_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_0_22_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_0_22_Closed_Text.style.display='none'; Codehighlighter1_0_22_Open_Image.style.display='inline'; Codehighlighter1_0_22_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top><span id=Codehighlighter1_0_22_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">/**/</span><span id=Codehighlighter1_0_22_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;*测试成员函数指针数组的小程序<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.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.cppblog.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.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Test<br><img id=Codehighlighter1_77_288_Open_Image onclick="this.style.display='none'; Codehighlighter1_77_288_Open_Text.style.display='none'; Codehighlighter1_77_288_Closed_Image.style.display='inline'; Codehighlighter1_77_288_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_77_288_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_77_288_Closed_Text.style.display='none'; Codehighlighter1_77_288_Open_Image.style.display='inline'; Codehighlighter1_77_288_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_77_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_77_288_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;Test();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">Test();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br><img id=Codehighlighter1_128_137_Open_Image onclick="this.style.display='none'; Codehighlighter1_128_137_Open_Text.style.display='none'; Codehighlighter1_128_137_Closed_Image.style.display='inline'; Codehighlighter1_128_137_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_128_137_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_128_137_Closed_Text.style.display='none'; Codehighlighter1_128_137_Open_Image.style.display='inline'; Codehighlighter1_128_137_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;add5()</span><span id=Codehighlighter1_128_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_128_137_Open_Text><span style="COLOR: #000000">{&nbsp;res</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">;}</span></span><span style="COLOR: #000000"><br><img id=Codehighlighter1_151_160_Open_Image onclick="this.style.display='none'; Codehighlighter1_151_160_Open_Text.style.display='none'; Codehighlighter1_151_160_Closed_Image.style.display='inline'; Codehighlighter1_151_160_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_151_160_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_151_160_Closed_Text.style.display='none'; Codehighlighter1_151_160_Open_Image.style.display='inline'; Codehighlighter1_151_160_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;add6()</span><span id=Codehighlighter1_151_160_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_151_160_Open_Text><span style="COLOR: #000000">{&nbsp;res</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;(Test::</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">add[</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">])();</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">这个2至关重要，在VC下没写会报错，但在QT里没报，但析构时出错！</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;DoAddAction();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Display();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000">:<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;res;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Test::Test()<br><img id=Codehighlighter1_306_367_Open_Image onclick="this.style.display='none'; Codehighlighter1_306_367_Open_Text.style.display='none'; Codehighlighter1_306_367_Closed_Image.style.display='inline'; Codehighlighter1_306_367_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_306_367_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_306_367_Closed_Text.style.display='none'; Codehighlighter1_306_367_Open_Image.style.display='inline'; Codehighlighter1_306_367_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_306_367_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_306_367_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;add[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=&amp;</span><span style="COLOR: #000000">Test::add5;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">注意这里的写法</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;add[</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=&amp;</span><span style="COLOR: #000000">Test::add6;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;res</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>Test::</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">Test()<br><img id=Codehighlighter1_384_387_Open_Image onclick="this.style.display='none'; Codehighlighter1_384_387_Open_Text.style.display='none'; Codehighlighter1_384_387_Closed_Image.style.display='inline'; Codehighlighter1_384_387_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_384_387_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_384_387_Closed_Text.style.display='none'; Codehighlighter1_384_387_Open_Image.style.display='inline'; Codehighlighter1_384_387_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_384_387_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_384_387_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Test::DoAddAction()<br><img id=Codehighlighter1_415_494_Open_Image onclick="this.style.display='none'; Codehighlighter1_415_494_Open_Text.style.display='none'; Codehighlighter1_415_494_Closed_Image.style.display='inline'; Codehighlighter1_415_494_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_415_494_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_415_494_Closed_Text.style.display='none'; Codehighlighter1_415_494_Open_Image.style.display='inline'; Codehighlighter1_415_494_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_415_494_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_415_494_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&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">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_441_492_Open_Image onclick="this.style.display='none'; Codehighlighter1_441_492_Open_Text.style.display='none'; Codehighlighter1_441_492_Closed_Image.style.display='inline'; Codehighlighter1_441_492_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_441_492_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_441_492_Closed_Text.style.display='none'; Codehighlighter1_441_492_Open_Image.style.display='inline'; Codehighlighter1_441_492_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_441_492_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_441_492_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="COLOR: #0000ff">this</span><span style="COLOR: #000000">-&gt;*</span><span style="COLOR: #000000">add[i])();</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">使用类成员函数指针必须有&#8220;-&gt;*&#8221;或&#8220;.*&#8221;的调用</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;Test::Display()<br><img id=Codehighlighter1_518_553_Open_Image onclick="this.style.display='none'; Codehighlighter1_518_553_Open_Text.style.display='none'; Codehighlighter1_518_553_Closed_Image.style.display='inline'; Codehighlighter1_518_553_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_518_553_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_518_553_Closed_Text.style.display='none'; Codehighlighter1_518_553_Open_Image.style.display='inline'; Codehighlighter1_518_553_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_518_553_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_518_553_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.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;res&nbsp;is:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">res</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br><img id=Codehighlighter1_567_659_Open_Image onclick="this.style.display='none'; Codehighlighter1_567_659_Open_Text.style.display='none'; Codehighlighter1_567_659_Closed_Image.style.display='inline'; Codehighlighter1_567_659_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_567_659_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_567_659_Closed_Text.style.display='none'; Codehighlighter1_567_659_Open_Image.style.display='inline'; Codehighlighter1_567_659_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_567_659_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.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_567_659_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;Test&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;test</span><span style="COLOR: #000000">=</span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000">&nbsp;Test();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;test</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">DoAddAction();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;test</span><span style="COLOR: #000000">-&gt;</span><span style="COLOR: #000000">Display();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;delete&nbsp;test;<br><img src="http://www.cppblog.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.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span></div>
<img src ="http://www.cppblog.com/dragon/aggbug/135250.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dragon/" target="_blank">Dragon</a> 2010-12-02 11:04 <a href="http://www.cppblog.com/dragon/archive/2010/12/02/135250.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>动态创建的二维数组与二维数组</title><link>http://www.cppblog.com/dragon/archive/2008/12/12/69304.html</link><dc:creator>Dragon</dc:creator><author>Dragon</author><pubDate>Fri, 12 Dec 2008 15:26:00 GMT</pubDate><guid>http://www.cppblog.com/dragon/archive/2008/12/12/69304.html</guid><wfw:comment>http://www.cppblog.com/dragon/comments/69304.html</wfw:comment><comments>http://www.cppblog.com/dragon/archive/2008/12/12/69304.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dragon/comments/commentRss/69304.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dragon/services/trackbacks/69304.html</trackback:ping><description><![CDATA[动态创建的二维数组与二维数组:<br>先看看以下代码,是动太创建一个二维数组a[3][4]&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int **a;<br>&nbsp;&nbsp;&nbsp; a=new int*[3];<br>&nbsp;&nbsp;&nbsp; for(int i=0;i&lt;3;i++)<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; a[i]=new int[4];<br>&nbsp;&nbsp;&nbsp; }<br>这是我调试时剪下来的图:<br><img alt=""  src="http://www.cppblog.com/images/cppblog_com/dragon/dongtai.jpg" width="302" height="196"><br>前面三行是每行的首地址,分别是&amp;a[0],&amp;a[1],&amp;a[2]<br>&amp;a[0][0]到&amp;a[0][3]是第一行元素的地址<br>&amp;a[1][0]到&amp;a[1][3]是第二行元素的地址<br><br>0x00372680-0x00372628=0x00000058<br>0x003726d8-0x00372680=0x00000058<br><br>可见,第一行和第二行,第二行和第三行相隔88(0x00000058)个字节<br>可以看出行与行之间是不连续的!<br><br>再看行里的:<br>0x0037262c-0x00372628=0x00000004<br>0x00372630-0x0037262c=0x00000004<br>0x00372634-0x00372630=0x00000004<br>都是相隔4(0x00000004)个字节,在我的电脑里整型是占4个字节.<br>可以看出行里是连续储存的!<br><br>再看我这代码(以第一行为例):<br><br>int a[3][4];<br><br>调试时剪下来的图:<br><img alt=""  src="http://www.cppblog.com/images/cppblog_com/dragon/jintai.jpg" width="268" height="198"><br>图的说明与前面一样:<br><br>0x0012ff60-0x0012ff50=0x00000010<br>0x0012ff70-0x0012ff60=0x00000010<br><br>可见,第一行和第二行,第二行和第三行相隔16(0x00000010)个字节<br>一行有4个整型元素,一个4字节,刚好是16字节.<br>可见行与行之间是连续的!<br><br>你还可以从&amp;a[0][3]与&amp;a[1][0]相隔的字节数看出来!<br><br>0x0012ff60-0x0012ff5c=0x00000004<br><br>刚好第一行未接下来就是第二行的开始!<br><br>再看行里的(以第一行为例):<br><br>0x0012ff54-0x0012ff50=0x00000004<br>0x0012ff58-0x0012ff54=0x00000004<br>0x0012ff5c-0x0012ff58=0x00000004<br>可以看出行里也是连续储存的!<br><br>总结:<br><span style="color: red;">动态创建的二维数组的行与行之间的地址是不连续的,行里元素的地址是连续的!</span><br style="color: red;"><span style="color: red;">而静态创建的二维数组的行与行之间的地址是连续的,行里元素的地址也是连续的!</span><br style="color: red;"><span style="color: red;">所以用地址自增或地址+标号访问元素时要小心!</span><br><img src ="http://www.cppblog.com/dragon/aggbug/69304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dragon/" target="_blank">Dragon</a> 2008-12-12 23:26 <a href="http://www.cppblog.com/dragon/archive/2008/12/12/69304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>void指针</title><link>http://www.cppblog.com/dragon/archive/2008/09/02/60760.html</link><dc:creator>Dragon</dc:creator><author>Dragon</author><pubDate>Tue, 02 Sep 2008 12:17:00 GMT</pubDate><guid>http://www.cppblog.com/dragon/archive/2008/09/02/60760.html</guid><wfw:comment>http://www.cppblog.com/dragon/comments/60760.html</wfw:comment><comments>http://www.cppblog.com/dragon/archive/2008/09/02/60760.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.cppblog.com/dragon/comments/commentRss/60760.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dragon/services/trackbacks/60760.html</trackback:ping><description><![CDATA[指针有两个属性:指向变量/对象的<font style="LINE-HEIGHT: 1.3em" color=#ff0000>地址</font><wbr>和<font style="LINE-HEIGHT: 1.3em" color=#ff0000>长度</font><wbr> <br>但是指针只存储地址,长度则取决于指针的类型 <br>编译器根据指针的类型从指针指向的地址向后寻址 <br>指针类型不同则寻址范围也不同,比如: <br>int*从指定地址向后寻找4字节作为变量的存储单元 <br>double*从指定地址向后寻找8字节作为变量的存储单元 <br><br>1.void指针是一种特别的指针 <br>&nbsp;&nbsp; void *vp <br>&nbsp;&nbsp;//说它特别是因为它没有类型 <br>&nbsp;&nbsp;//或者说这个类型不能判断出指向对象的长度 <br><br>2.任何指针都可以赋值给void指针 <br>&nbsp;&nbsp;type *p; <br>&nbsp;&nbsp;vp=p; <br>&nbsp;&nbsp;//不需转换 <br>&nbsp;&nbsp;//只获得变量/对象地址而不获得大小 <br><br>3.void指针赋值给其他类型的指针时都要进行转换 <br>&nbsp;&nbsp; type *p=(type*)vp; <br>&nbsp;&nbsp; //转换类型也就是获得指向变量/对象大小 <br>转:http://icoding.spaces.live.com/blog/cns!209684E38D520BA6!130.entry <br><br>4.void指针不能复引用 <br>&nbsp;&nbsp;*vp//错误 <br>&nbsp;&nbsp;因为void指针只知道,指向变量/对象的起始地址 <br>&nbsp;&nbsp;而不知道指向变量/对象的大小(占几个字节)所以无法正确引用 <br><br>5.void指针不能参与指针运算,除非进行转换 <br>&nbsp;&nbsp; (type*)vp++; <br>&nbsp;&nbsp;//vp==vp+sizeof(type)<br><br><br><br>#include&lt;iostream&gt;<br>#include&lt;stdlib.h&gt;<br>#include&lt;string&gt;<br>using namespace std;<br>typedef struct tag_st <br>{ <br>char id[10];<br>float fa[2];<br>}ST; <br>//我在程序里面这样使用的 <br>int main()<br>{<br>ST * P=(ST *)malloc(sizeof(ST));<br>strcpy(P-&gt;id,"hello!");<br>P-&gt;fa[0]=1.1;<br>P-&gt;fa[1]=2.1;<br><br>ST * Q=(ST *)malloc(sizeof(ST));<br>strcpy(Q-&gt;id,"world!");<br>Q-&gt;fa[0]=3.1;<br>Q-&gt;fa[1]=4.1;<br>void ** plink=(void **)P;<br>*((ST *)(plink)) = * Q; //<font style="LINE-HEIGHT: 1.3em" color=#ff0000>plink要先强制转换一下,目的是为了让它先知道要覆盖的大小.</font><wbr><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //<font style="LINE-HEIGHT: 1.3em" color=#ff0000>P的内容竟然给Q的内容覆盖掉了.</font><wbr><br>cout&lt;&lt;P-&gt;id&lt;&lt;" "&lt;&lt;P-&gt;fa[0]&lt;&lt;" "&lt;&lt;P-&gt;fa[1]&lt;&lt;endl;<br>return 0;<br>}
<img src ="http://www.cppblog.com/dragon/aggbug/60760.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dragon/" target="_blank">Dragon</a> 2008-09-02 20:17 <a href="http://www.cppblog.com/dragon/archive/2008/09/02/60760.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>数组形参</title><link>http://www.cppblog.com/dragon/archive/2008/09/02/60759.html</link><dc:creator>Dragon</dc:creator><author>Dragon</author><pubDate>Tue, 02 Sep 2008 12:15:00 GMT</pubDate><guid>http://www.cppblog.com/dragon/archive/2008/09/02/60759.html</guid><wfw:comment>http://www.cppblog.com/dragon/comments/60759.html</wfw:comment><comments>http://www.cppblog.com/dragon/archive/2008/09/02/60759.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/dragon/comments/commentRss/60759.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/dragon/services/trackbacks/60759.html</trackback:ping><description><![CDATA[写C++程序函数部分，传递数组往往已造成错误。总结一下<br>1，数组形参的定义。<br>如果要编写一个函数，输出int型数组的内容，可以用下面三种方式指定数组形参：<br>void printValues(int*)<br>void printValues(int[])<br>void printValues(int[10])<br>注意：不需要修改数组形参的元素时，函数应该将形参定义为指向const对象的指针<br>void f(const&nbsp;&nbsp;int*)<br>2,多维数组的传递<br><font style="LINE-HEIGHT: 1.3em" color=#cc0000>除了第一维以外的所有维的长度都是元素类型的一部分，必须明确指定：</font><wbr><br>void printValues(int (*matrix)[10], int rowSize)<br>void printValues(int matrix[][10], int rowSize)//这个更直观.<br><br>//下面是例子<br>#include&lt;iostream&gt;<br>using namespace std;<br>//一维数组形参<br>/*<br>void print(int *a)<br>{<br>cout&lt;&lt;*a&lt;&lt;" "&lt;&lt;*(a+1)&lt;&lt;" "&lt;&lt;*(a+2)&lt;&lt;endl;<br>}<br>*/<br>/*<br>void print(int a[])<br>{<br>cout&lt;&lt;*a&lt;&lt;" "&lt;&lt;*(a+1)&lt;&lt;" "&lt;&lt;*(a+2)&lt;&lt;endl;<br>}<br>*/<br>/*<br>void print(int a[3])<br>{<br>cout&lt;&lt;*a&lt;&lt;" "&lt;&lt;*(a+1)&lt;&lt;" "&lt;&lt;*(a+2)&lt;&lt;endl;<br>}<br>*/<br>/*<br>void print(int a[3])<br>{<br>cout&lt;&lt;a[0]&lt;&lt;" "&lt;&lt;a[1]&lt;&lt;" "&lt;&lt;a[2]&lt;&lt;endl;<br>}<br>*/<br>/*<br>void print(int *a)<br>{<br>cout&lt;&lt;a[0]&lt;&lt;" "&lt;&lt;a[1]&lt;&lt;" "&lt;&lt;a[2]&lt;&lt;endl;<br>}<br>*/<br>/*<br>void print(int a[])<br>{<br>cout&lt;&lt;a[0]&lt;&lt;" "&lt;&lt;a[1]&lt;&lt;" "&lt;&lt;a[2]&lt;&lt;endl;<br>}<br>*/<br>//上面哪一种都行<br>int main()<br>{<br>int a[3]={2,1,3};<br>print(a);<br>return 0;<br>}<br><br><br><br><br><br><br><br><br><br><br><br>//多维数组作形参<br>#include&lt;iostream&gt;<br>using namespace std;<br>//三选一<br>//void print(int (*matrix)[3],int rowsize)<br>//void print(int matrix[2][3],int rowsize)<br>void print(int matrix[][3],int rowsize)<br>{<br>for(int i=0;i&lt;rowsize;i++)<br>{<br>&nbsp;&nbsp;for(int j=0;j&lt;3;j++)<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp; cout&lt;&lt;matrix[i][j]&lt;&lt;" ";<br>&nbsp;&nbsp;}<br>&nbsp;&nbsp;cout&lt;&lt;endl;<br>}<br>}<br>int main()<br>{<br>int a[2][3]=<br>{<br>&nbsp;&nbsp;1,2,3,<br>&nbsp;&nbsp;4,5,6<br>};<br>print(a,2);<br>return 0;<br>}<img id=paperPicArea1 style="DISPLAY: none; POSITION: relative" src="http://imgcache.qq.com/ac/b.gif" twffan="done">
<img src ="http://www.cppblog.com/dragon/aggbug/60759.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/dragon/" target="_blank">Dragon</a> 2008-09-02 20:15 <a href="http://www.cppblog.com/dragon/archive/2008/09/02/60759.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>