﻿<?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++博客-ACFirst-随笔分类-C/C++</title><link>http://www.cppblog.com/zzfmars/category/14325.html</link><description>明天是另一天，你能看到明天的太阳吗？</description><language>zh-cn</language><lastBuildDate>Sat, 28 May 2011 12:06:44 GMT</lastBuildDate><pubDate>Sat, 28 May 2011 12:06:44 GMT</pubDate><ttl>60</ttl><item><title>getline（） 函数</title><link>http://www.cppblog.com/zzfmars/archive/2011/05/27/147447.html</link><dc:creator>Kevin_Zhang</dc:creator><author>Kevin_Zhang</author><pubDate>Fri, 27 May 2011 15:50:00 GMT</pubDate><guid>http://www.cppblog.com/zzfmars/archive/2011/05/27/147447.html</guid><wfw:comment>http://www.cppblog.com/zzfmars/comments/147447.html</wfw:comment><comments>http://www.cppblog.com/zzfmars/archive/2011/05/27/147447.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zzfmars/comments/commentRss/147447.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zzfmars/services/trackbacks/147447.html</trackback:ping><description><![CDATA[<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #008000">//</span><span style="color: #008000">&nbsp;test3.cpp&nbsp;:&nbsp;Defines&nbsp;the&nbsp;entry&nbsp;point&nbsp;for&nbsp;the&nbsp;console&nbsp;application.<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #008000">//<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><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 /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">iostream</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">string</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">stdio.h</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></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 align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;argc,&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;argv[])<br /><img id="Codehighlighter1_206_391_Open_Image" onclick="this.style.display='none'; Codehighlighter1_206_391_Open_Text.style.display='none'; Codehighlighter1_206_391_Closed_Image.style.display='inline'; Codehighlighter1_206_391_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_206_391_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_206_391_Closed_Text.style.display='none'; Codehighlighter1_206_391_Open_Image.style.display='inline'; Codehighlighter1_206_391_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_206_391_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_206_391_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">string</span><span style="color: #000000">&nbsp;str1,str2,str3;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;getline(cin,str1);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;getline(cin,str2);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;str3</span><span style="color: #000000">=</span><span style="color: #000000">str1</span><span style="color: #000000">+</span><span style="color: #000000">str2;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">str1</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">endl</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">str2</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">endl</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">str3</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">endl;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">str1[</span><span style="color: #000000">0</span><span style="color: #000000">]</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">endl</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">str2[</span><span style="color: #000000">0</span><span style="color: #000000">]</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">endl;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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 align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span></div><img src ="http://www.cppblog.com/zzfmars/aggbug/147447.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zzfmars/" target="_blank">Kevin_Zhang</a> 2011-05-27 23:50 <a href="http://www.cppblog.com/zzfmars/archive/2011/05/27/147447.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>动态创建整形数组</title><link>http://www.cppblog.com/zzfmars/archive/2011/05/27/147415.html</link><dc:creator>Kevin_Zhang</dc:creator><author>Kevin_Zhang</author><pubDate>Fri, 27 May 2011 13:52:00 GMT</pubDate><guid>http://www.cppblog.com/zzfmars/archive/2011/05/27/147415.html</guid><wfw:comment>http://www.cppblog.com/zzfmars/comments/147415.html</wfw:comment><comments>http://www.cppblog.com/zzfmars/archive/2011/05/27/147415.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zzfmars/comments/commentRss/147415.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zzfmars/services/trackbacks/147415.html</trackback:ping><description><![CDATA[<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #008000">//</span><span style="color: #008000">&nbsp;test3.cpp&nbsp;:&nbsp;Defines&nbsp;the&nbsp;entry&nbsp;point&nbsp;for&nbsp;the&nbsp;console&nbsp;application.<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #008000">//<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><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 /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">iostream</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></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 align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;argc,&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;argv[])<br /><img id="Codehighlighter1_167_386_Open_Image" onclick="this.style.display='none'; Codehighlighter1_167_386_Open_Text.style.display='none'; Codehighlighter1_167_386_Closed_Image.style.display='inline'; Codehighlighter1_167_386_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_167_386_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_167_386_Closed_Text.style.display='none'; Codehighlighter1_167_386_Open_Image.style.display='inline'; Codehighlighter1_167_386_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_167_386_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_167_386_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;length,i,</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;ptr1;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">"</span><span style="color: #000000">请输入数组的长度：</span><span style="color: #000000">"</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000">&gt;&gt;</span><span style="color: #000000">length;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;ptr1</span><span style="color: #000000">=</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">[length];<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(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">length;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">(ptr1</span><span style="color: #000000">+</span><span style="color: #000000">i)</span><span style="color: #000000">=</span><span style="color: #000000">i</span><span style="color: #000000">*</span><span style="color: #000000">10</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(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">length;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">ptr1[i]</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">endl;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;delete[]&nbsp;ptr1;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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 align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span></div><img src ="http://www.cppblog.com/zzfmars/aggbug/147415.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zzfmars/" target="_blank">Kevin_Zhang</a> 2011-05-27 21:52 <a href="http://www.cppblog.com/zzfmars/archive/2011/05/27/147415.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>指针操作二维数组</title><link>http://www.cppblog.com/zzfmars/archive/2011/05/27/147412.html</link><dc:creator>Kevin_Zhang</dc:creator><author>Kevin_Zhang</author><pubDate>Fri, 27 May 2011 13:44:00 GMT</pubDate><guid>http://www.cppblog.com/zzfmars/archive/2011/05/27/147412.html</guid><wfw:comment>http://www.cppblog.com/zzfmars/comments/147412.html</wfw:comment><comments>http://www.cppblog.com/zzfmars/archive/2011/05/27/147412.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zzfmars/comments/commentRss/147412.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zzfmars/services/trackbacks/147412.html</trackback:ping><description><![CDATA[题目描述：<br />&nbsp;&nbsp;&nbsp; 从键盘输入一个3X3的整数矩阵，输出该矩阵并求出主对角线元素的和。<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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><span style="color: #008000">//</span><span style="color: #008000">&nbsp;test3.cpp&nbsp;:&nbsp;Defines&nbsp;the&nbsp;entry&nbsp;point&nbsp;for&nbsp;the&nbsp;console&nbsp;application.<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #008000">//<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><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 /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" />#include&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">iostream</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></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 align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;argc,&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;argv[])<br /><img id="Codehighlighter1_167_506_Open_Image" onclick="this.style.display='none'; Codehighlighter1_167_506_Open_Text.style.display='none'; Codehighlighter1_167_506_Closed_Image.style.display='inline'; Codehighlighter1_167_506_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_167_506_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_167_506_Closed_Text.style.display='none'; Codehighlighter1_167_506_Open_Image.style.display='inline'; Codehighlighter1_167_506_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_167_506_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_167_506_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;a[</span><span style="color: #000000">3</span><span style="color: #000000">][</span><span style="color: #000000">3</span><span style="color: #000000">],i,j,s</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;(</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;ptr)[</span><span style="color: #000000">3</span><span style="color: #000000">];<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;ptr</span><span style="color: #000000">=</span><span style="color: #000000">a;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">"</span><span style="color: #000000">请输入矩阵的值：</span><span style="color: #000000">"</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(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">3</span><span style="color: #000000">;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(j</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;j</span><span style="color: #000000">&lt;</span><span style="color: #000000">3</span><span style="color: #000000">;j</span><span style="color: #000000">++</span><span style="color: #000000">)<br /><img id="Codehighlighter1_280_348_Open_Image" onclick="this.style.display='none'; Codehighlighter1_280_348_Open_Text.style.display='none'; Codehighlighter1_280_348_Closed_Image.style.display='inline'; Codehighlighter1_280_348_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_280_348_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_280_348_Closed_Text.style.display='none'; Codehighlighter1_280_348_Open_Image.style.display='inline'; Codehighlighter1_280_348_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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_280_348_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_280_348_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cin</span><span style="color: #000000">&gt;&gt;*</span><span style="color: #000000">(</span><span style="color: #000000">*</span><span style="color: #000000">(ptr</span><span style="color: #000000">+</span><span style="color: #000000">i)</span><span style="color: #000000">+</span><span style="color: #000000">j);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">(i</span><span style="color: #000000">==</span><span style="color: #000000">j)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s</span><span style="color: #000000">+=*</span><span style="color: #000000">(</span><span style="color: #000000">*</span><span style="color: #000000">(ptr</span><span style="color: #000000">+</span><span style="color: #000000">i)</span><span style="color: #000000">+</span><span style="color: #000000">j);<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">"</span><span style="color: #000000">输出矩阵：\n</span><span style="color: #000000">"</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(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">3</span><span style="color: #000000">;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br /><img id="Codehighlighter1_391_460_Open_Image" onclick="this.style.display='none'; Codehighlighter1_391_460_Open_Text.style.display='none'; Codehighlighter1_391_460_Closed_Image.style.display='inline'; Codehighlighter1_391_460_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_391_460_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_391_460_Closed_Text.style.display='none'; Codehighlighter1_391_460_Open_Image.style.display='inline'; Codehighlighter1_391_460_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</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_391_460_Closed_Text"><img src="http://www.cppblog.com/Images/dot.gif"  alt="" /></span><span id="Codehighlighter1_391_460_Open_Text"><span style="color: #000000">{<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(j</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;j</span><span style="color: #000000">&lt;</span><span style="color: #000000">3</span><span style="color: #000000">;j</span><span style="color: #000000">++</span><span style="color: #000000">)<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">ptr[i][j]</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">endl;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" /><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">"</span><span style="color: #000000">矩阵主对角线元素的和为：</span><span style="color: #000000">"</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">s</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">endl;<br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif"  alt="" />&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 align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif"  alt="" />}</span></span><span style="color: #000000"><br /><img align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif"  alt="" /></span></div><br /><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/zzfmars/369.jpg" width="667" longdesc="" height="437" /><br /><img src ="http://www.cppblog.com/zzfmars/aggbug/147412.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zzfmars/" target="_blank">Kevin_Zhang</a> 2011-05-27 21:44 <a href="http://www.cppblog.com/zzfmars/archive/2011/05/27/147412.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>指针操作一维数组</title><link>http://www.cppblog.com/zzfmars/archive/2011/05/27/147407.html</link><dc:creator>Kevin_Zhang</dc:creator><author>Kevin_Zhang</author><pubDate>Fri, 27 May 2011 13:30:00 GMT</pubDate><guid>http://www.cppblog.com/zzfmars/archive/2011/05/27/147407.html</guid><wfw:comment>http://www.cppblog.com/zzfmars/comments/147407.html</wfw:comment><comments>http://www.cppblog.com/zzfmars/archive/2011/05/27/147407.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zzfmars/comments/commentRss/147407.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zzfmars/services/trackbacks/147407.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"><!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />--><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><span style="color: #008000">//</span><span style="color: #008000">&nbsp;test3.cpp&nbsp;:&nbsp;Defines&nbsp;the&nbsp;entry&nbsp;point&nbsp;for&nbsp;the&nbsp;console&nbsp;application.<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span><span style="color: #008000">//<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span><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 /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" />#include&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">iostream</span><span style="color: #000000">"</span><span style="color: #000000"><br /><img alt="" 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 /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;main(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;argc,&nbsp;</span><span style="color: #0000ff">char</span><span style="color: #000000">*</span><span style="color: #000000">&nbsp;argv[])<br /><img id="Codehighlighter1_167_476_Open_Image" onclick="this.style.display='none'; Codehighlighter1_167_476_Open_Text.style.display='none'; Codehighlighter1_167_476_Closed_Image.style.display='inline'; Codehighlighter1_167_476_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockStart.gif"><img style="display: none" id="Codehighlighter1_167_476_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_167_476_Closed_Text.style.display='none'; Codehighlighter1_167_476_Open_Image.style.display='inline'; Codehighlighter1_167_476_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_167_476_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_167_476_Open_Text"><span style="color: #000000">{&nbsp;&nbsp;&nbsp;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">ptr1,</span><span style="color: #000000">*</span><span style="color: #000000">ptr2,t;<br /><img id="Codehighlighter1_204_225_Open_Image" onclick="this.style.display='none'; Codehighlighter1_204_225_Open_Text.style.display='none'; Codehighlighter1_204_225_Closed_Image.style.display='inline'; Codehighlighter1_204_225_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_204_225_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_204_225_Closed_Text.style.display='none'; Codehighlighter1_204_225_Open_Image.style.display='inline'; Codehighlighter1_204_225_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;a[]</span><span style="color: #000000">=</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_204_225_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_204_225_Open_Text"><span style="color: #000000">{</span><span style="color: #000000">1</span><span style="color: #000000">,</span><span style="color: #000000">2</span><span style="color: #000000">,</span><span style="color: #000000">3</span><span style="color: #000000">,</span><span style="color: #000000">4</span><span style="color: #000000">,</span><span style="color: #000000">5</span><span style="color: #000000">,</span><span style="color: #000000">6</span><span style="color: #000000">,</span><span style="color: #000000">7</span><span style="color: #000000">,</span><span style="color: #000000">8</span><span style="color: #000000">,</span><span style="color: #000000">9</span><span style="color: #000000">,</span><span style="color: #000000">10</span><span style="color: #000000">}</span></span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;ptr1</span><span style="color: #000000">=</span><span style="color: #000000">a;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;ptr2</span><span style="color: #000000">=&amp;</span><span style="color: #000000">a[</span><span style="color: #000000">9</span><span style="color: #000000">];<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</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">10</span><span style="color: #000000">;i</span><span style="color: #000000">++</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;*</span><span style="color: #000000">(ptr1</span><span style="color: #000000">+</span><span style="color: #000000">i)</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">;<br /><img alt="" 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">endl;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">while</span><span style="color: #000000">(ptr2</span><span style="color: #000000">&gt;</span><span style="color: #000000">ptr1)<br /><img id="Codehighlighter1_329_389_Open_Image" onclick="this.style.display='none'; Codehighlighter1_329_389_Open_Text.style.display='none'; Codehighlighter1_329_389_Closed_Image.style.display='inline'; Codehighlighter1_329_389_Closed_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="display: none" id="Codehighlighter1_329_389_Closed_Image" onclick="this.style.display='none'; Codehighlighter1_329_389_Closed_Text.style.display='none'; Codehighlighter1_329_389_Open_Image.style.display='inline'; Codehighlighter1_329_389_Open_Text.style.display='inline';" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</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_329_389_Closed_Text"><img alt="" src="http://www.cppblog.com/Images/dot.gif" /></span><span id="Codehighlighter1_329_389_Open_Text"><span style="color: #000000">{<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;t</span><span style="color: #000000">=*</span><span style="color: #000000">ptr1;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">ptr1</span><span style="color: #000000">=*</span><span style="color: #000000">ptr2;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000">*</span><span style="color: #000000">ptr2</span><span style="color: #000000">=</span><span style="color: #000000">t;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ptr1</span><span style="color: #000000">++</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ptr2</span><span style="color: #000000">--</span><span style="color: #000000">;<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedSubBlockEnd.gif" />&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;ptr1</span><span style="color: #000000">=&amp;</span><span style="color: #000000">a[</span><span style="color: #000000">0</span><span style="color: #000000">];<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">(</span><span style="color: #0000ff">int</span><span style="color: #000000">&nbsp;j</span><span style="color: #000000">=</span><span style="color: #000000">0</span><span style="color: #000000">;j</span><span style="color: #000000">&lt;</span><span style="color: #000000">10</span><span style="color: #000000">;j</span><span style="color: #000000">++</span><span style="color: #000000">)<br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/InBlock.gif" />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cout</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">ptr1[j]</span><span style="color: #000000">&lt;&lt;</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">;<br /><img alt="" 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">endl;<br /><img alt="" 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 /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/ExpandedBlockEnd.gif" />}</span></span><span style="color: #000000"><br /><img alt="" align="top" src="http://www.cppblog.com/images/OutliningIndicators/None.gif" /></span></div><img border="0" alt="" src="http://www.cppblog.com/images/cppblog_com/zzfmars/369.jpg" width="667" longdesc="" height="437" /><br /><img src ="http://www.cppblog.com/zzfmars/aggbug/147407.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zzfmars/" target="_blank">Kevin_Zhang</a> 2011-05-27 21:30 <a href="http://www.cppblog.com/zzfmars/archive/2011/05/27/147407.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用scanf输入字符串空格不识别？？</title><link>http://www.cppblog.com/zzfmars/archive/2011/05/08/145930.html</link><dc:creator>Kevin_Zhang</dc:creator><author>Kevin_Zhang</author><pubDate>Sun, 08 May 2011 02:22:00 GMT</pubDate><guid>http://www.cppblog.com/zzfmars/archive/2011/05/08/145930.html</guid><wfw:comment>http://www.cppblog.com/zzfmars/comments/145930.html</wfw:comment><comments>http://www.cppblog.com/zzfmars/archive/2011/05/08/145930.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zzfmars/comments/commentRss/145930.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zzfmars/services/trackbacks/145930.html</trackback:ping><description><![CDATA[<pre id=best-answer-content class="reply-text mb10">用scanf不是不显示空格，
而是用scanf接收字符串的话，
在串首遇到空格的话，跳过，继续寻找下一个非空格字符，
在串中遇到空格时，结束字符串的输入。
所以如果用户输入"    abcd  efg"的话，
scanf取得的字符串为"abcd"。
而gets取得字符串时，是在遇到EOF(串尾)时停止，所以不存在这个问题。</pre>
<pre class="reply-text mb10">
<pre id=best-answer-content class="reply-text mb10">控制符不同 你用%c说明是输入一个字符  此时可以scanf可以接受空格  </pre>
<pre class="reply-text mb10">但其他控制符都以空格为结束标志 如%d %s都是以空格为结束 所以你的二个不接受空格</pre>
<pre class="reply-text mb10">&nbsp;</pre>
<pre class="reply-text mb10">&nbsp;</pre>
<pre class="reply-text mb10">总结：scanf 接受字符串，遇到空格结束，即以空格为结束符。</pre>
<pre class="reply-text mb10">     printf 输出字符串，遇到空格不结束，而是遇到'\0'这个字符串结束标志才结束。</pre>
<pre class="reply-text mb10">     因此为了处理方便，输入字符串时,scanf和gets永远分开使用。</pre>
<pre class="reply-text mb10">&nbsp;</pre>
<pre class="reply-text mb10">&nbsp;</pre>
</pre>
<img src ="http://www.cppblog.com/zzfmars/aggbug/145930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zzfmars/" target="_blank">Kevin_Zhang</a> 2011-05-08 10:22 <a href="http://www.cppblog.com/zzfmars/archive/2011/05/08/145930.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>空格字符和字符串结束字符的区别 </title><link>http://www.cppblog.com/zzfmars/archive/2011/05/08/145929.html</link><dc:creator>Kevin_Zhang</dc:creator><author>Kevin_Zhang</author><pubDate>Sun, 08 May 2011 02:08:00 GMT</pubDate><guid>http://www.cppblog.com/zzfmars/archive/2011/05/08/145929.html</guid><wfw:comment>http://www.cppblog.com/zzfmars/comments/145929.html</wfw:comment><comments>http://www.cppblog.com/zzfmars/archive/2011/05/08/145929.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zzfmars/comments/commentRss/145929.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zzfmars/services/trackbacks/145929.html</trackback:ping><description><![CDATA[当字符串中有字符串结束字符时,字符串会被截断,而空格字符只是显示一个空字符,可以把它当作一个普通字符看待。<br>
<div class=content>
<pre id=content-166585815 class="reply-text mb10">字符串结束字符 \0  ASCII 是 0
空格你看不到。ASCII 是 32 </pre>
</div>
<pre id=content-166586650 class="reply-text mb10">字符串结束字符 \0 ASCII 是 0x00
空格。ASCII 是 0x20 </pre>
<pre class="reply-text mb10">&nbsp;</pre>
<pre class="reply-text mb10">&nbsp;</pre>
<img src ="http://www.cppblog.com/zzfmars/aggbug/145929.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zzfmars/" target="_blank">Kevin_Zhang</a> 2011-05-08 10:08 <a href="http://www.cppblog.com/zzfmars/archive/2011/05/08/145929.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>字符串输入时应注意的问题</title><link>http://www.cppblog.com/zzfmars/archive/2010/11/22/134309.html</link><dc:creator>Kevin_Zhang</dc:creator><author>Kevin_Zhang</author><pubDate>Mon, 22 Nov 2010 13:11:00 GMT</pubDate><guid>http://www.cppblog.com/zzfmars/archive/2010/11/22/134309.html</guid><wfw:comment>http://www.cppblog.com/zzfmars/comments/134309.html</wfw:comment><comments>http://www.cppblog.com/zzfmars/archive/2010/11/22/134309.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zzfmars/comments/commentRss/134309.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zzfmars/services/trackbacks/134309.html</trackback:ping><description><![CDATA[&nbsp;c语言中字符串的输入一般有 <span style="COLOR: rgb(51,102,255)">scanf()，getch()，getchar()，gets()，getline()</span>。这些函数都是实现从键盘输入的标准输入方式。但是却有一些区别：<br>gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束, 但回车符不属于这个字符串，其中字符串中可以有空字符。例如:<br>&nbsp;&nbsp; char&nbsp; s[50]; <br>&nbsp;&nbsp; gets(s);&nbsp; <br><span style="COLOR: rgb(51,102,255)">scanf("%s", &amp;s)</span>与 <span style="COLOR: rgb(51,102,255)">gets(s)</span>函数相似, 但不完全相同, 使用scanf("%s", &amp;s)函数输入字符串时存在一个问题, 就是如果输入了空格会认为输入字符串结束,空格后的字符将作为下一个输入项处理, 但gets() 函数将接收输入的整个字符串直到回车为止。<br><span style="COLOR: rgb(51,102,255)">getch()</span>函数是从标准输入设备中读取一个字符，但这个字符不会在终端中显示出来。<br><span style="COLOR: rgb(51,102,255)">getchar()</span>函数也是从标准输入设备中读取一个字符，但这个字符在终端中显示出来。<br><span style="COLOR: rgb(51,102,255)">getline()</span>函数是读取一行的字符串。<br><br>
<img src ="http://www.cppblog.com/zzfmars/aggbug/134309.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zzfmars/" target="_blank">Kevin_Zhang</a> 2010-11-22 21:11 <a href="http://www.cppblog.com/zzfmars/archive/2010/11/22/134309.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDU1000</title><link>http://www.cppblog.com/zzfmars/archive/2010/08/21/124239.html</link><dc:creator>Kevin_Zhang</dc:creator><author>Kevin_Zhang</author><pubDate>Sat, 21 Aug 2010 15:46:00 GMT</pubDate><guid>http://www.cppblog.com/zzfmars/archive/2010/08/21/124239.html</guid><wfw:comment>http://www.cppblog.com/zzfmars/comments/124239.html</wfw:comment><comments>http://www.cppblog.com/zzfmars/archive/2010/08/21/124239.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zzfmars/comments/commentRss/124239.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zzfmars/services/trackbacks/124239.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 src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">stdio.h</span><span style="COLOR: #000000">"</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></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;&nbsp;main()<br><img id=Codehighlighter1_71_178_Open_Image onclick="this.style.display='none'; Codehighlighter1_71_178_Open_Text.style.display='none'; Codehighlighter1_71_178_Closed_Image.style.display='inline'; Codehighlighter1_71_178_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_71_178_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_71_178_Closed_Text.style.display='none'; Codehighlighter1_71_178_Open_Image.style.display='inline'; Codehighlighter1_71_178_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_71_178_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_71_178_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">int</span><span style="COLOR: #000000">&nbsp;a,b;<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>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(&nbsp;scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">a,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">b)</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_130_162_Open_Image onclick="this.style.display='none'; Codehighlighter1_130_162_Open_Text.style.display='none'; Codehighlighter1_130_162_Closed_Image.style.display='inline'; Codehighlighter1_130_162_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif" align=top><img id=Codehighlighter1_130_162_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_130_162_Closed_Text.style.display='none'; Codehighlighter1_130_162_Open_Image.style.display='inline'; Codehighlighter1_130_162_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;</span><span id=Codehighlighter1_130_162_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_130_162_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,a</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">b);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;}</span></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">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>
<a href="http://acm.hdu.edu.cn/showproblem.php?pid=1000">http://acm.hdu.edu.cn/showproblem.php?pid=1000</a>
<img src ="http://www.cppblog.com/zzfmars/aggbug/124239.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zzfmars/" target="_blank">Kevin_Zhang</a> 2010-08-21 23:46 <a href="http://www.cppblog.com/zzfmars/archive/2010/08/21/124239.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C/C++ source code </title><link>http://www.cppblog.com/zzfmars/archive/2010/08/20/124061.html</link><dc:creator>Kevin_Zhang</dc:creator><author>Kevin_Zhang</author><pubDate>Fri, 20 Aug 2010 01:38:00 GMT</pubDate><guid>http://www.cppblog.com/zzfmars/archive/2010/08/20/124061.html</guid><wfw:comment>http://www.cppblog.com/zzfmars/comments/124061.html</wfw:comment><comments>http://www.cppblog.com/zzfmars/archive/2010/08/20/124061.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zzfmars/comments/commentRss/124061.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zzfmars/services/trackbacks/124061.html</trackback:ping><description><![CDATA[Source: <a href="http://riddickbryant.javaeye.com/blog/583884" target=_blank>http://riddickbryant.javaeye.com/blog/583884</a><br><br>
<div class=blog_content>
<p>C/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单，这些网站提供c/c++源代码。这份清单提供了源代码的链接以及它们的小说明。我已尽力包括最佳的C/C++源代码的网站。这不是一个完整的清单，您有建议可以联系我，我将欢迎您的建议，以进一步加强这方面的清单。 <br>1、<a href="http://snippets.dzone.com/tag/c/"><span style="COLOR: #005eac"><u>http://snippets.dzone.com/tag/c/</u></span></a> --数以千计的有用的C语言源代码片段 <br>2、http://www.hotscripts.com/category/c-cpp/scripts-programs/ Hotscripts --提供数以百计的C和C++脚本和程序。所有程序都分为不同的类别。 <br>3、<a href="http://www.planetsourcecode.com/vb/default.asp?lngWId=3"><span style="COLOR: #005eac"><u>http://www.planetsourcecode.com/vb/default.asp?lngWId=3</u></span></a> --超过万行C和C++免费的源代码 <br>4、<a href="http://freshmeat.net/browse/164/"><span style="COLOR: #005eac"><u>http://freshmeat.net/browse/164/</u></span></a> --超过9000个C编写的项目。 <br>5、<a href="http://www.daniweb.com/code/c.html"><span style="COLOR: #005eac"><u>http://www.daniweb.com/code/c.html</u></span></a> --DANIWEB提供的实用代码段 。 <br>6、<a href="http://www.programmersheaven.com/tags/C/"><span style="COLOR: #005eac"><u>http://www.programmersheaven.com/tags/C/</u></span></a> --programmersheaven.com上的C编程资源。 <br>7、<a href="http://www.ddj.com/code/ddj.html"><span style="COLOR: #005eac"><u>http://www.ddj.com/code/ddj.html</u></span></a> --Dr. Dobb&#8217;s Journal的源代码。 <br>8、<a href="http://www.cprogramming.com/cgi-bin/source/source.cgi"><span style="COLOR: #005eac"><u>http://www.cprogramming.com/cgi-bin/source/source.cgi</u></span></a> --C和C + +编程资源。 <br>9、<a href="http://www.codecogs.com/"><span style="COLOR: #005eac"><u>http://www.codecogs.com/</u></span></a> --CodeCogs是一项协作的开放源码库，C/C++的数值方面的组件。 <br>10、<a href="http://www.google.com/codesearch?q=programming++lang:c&amp;cs_r=lang:c"><span style="COLOR: #005eac"><u>http://www.google.com/codesearch?q=programming++lang:c&amp;cs_r=lang:c</u></span></a> --谷歌代码的C源代码。 <br>11、<a href="http://www.codepedia.com/1/C"><span style="COLOR: #005eac"><u>http://www.codepedia.com/1/C</u></span></a> --CodePedia是一个开放的关于系统编程和其他与电脑有关的议题。 <br>12、<a href="http://www.cis.temple.edu/~ingargio/cis71/code/"><span style="COLOR: #005eac"><u>http://www.cis.temple.edu/~ingargio/cis71/code/</u></span></a> --为学生提供的一个简单的C语言程序的列表。 <br>13、<a href="http://www.codeproject.com/?cat=2"><span style="COLOR: #005eac"><u>http://www.codeproject.com/?cat=2</u></span></a> --codeproject提供的C/C++资源代码项目。 <br>14、<a href="http://www.thefreecountry.com/sourcecode/cpp.shtml"><span style="COLOR: #005eac"><u>http://www.thefreecountry.com/sourcecode/cpp.shtml</u></span></a> --以下是一些C和C++库的DLL，VCLs，源代码，元件，模块，应用程序框架，类库，源代码片段等，你可以在您的项目中使用而不需要支付费用和版税。 <br>15、<a href="http://people.sc.fsu.edu/~burkardt/cpp_src/cpp_src.html"><span style="COLOR: #005eac"><u>http://people.sc.fsu.edu/~burkardt/cpp_src/cpp_src.html</u></span></a> --这是一个全面的关于C++的345个源代码清单。 <br>16、<a href="http://www.cplusplus.com/src/"><span style="COLOR: #005eac"><u>http://www.cplusplus.com/src/</u></span></a> --C++写的通用控制台程序和Windows程序代码清单。 <br>17、<a href="http://users.cs.fiu.edu/~weiss/dsaa_c++/code/"><span style="COLOR: #005eac"><u>http://users.cs.fiu.edu/~weiss/dsaa_c++/code/</u></span></a> --C++语言数据结构与算法分析（第二版）的源代码。 <br>18、<a href="http://c.snippets.org/"><span style="COLOR: #005eac"><u>http://c.snippets.org/</u></span></a> --C源代码片段。 <br>19、<a href="http://www.bbdsoft.com/downloads.html"><span style="COLOR: #005eac"><u>http://www.bbdsoft.com/downloads.html</u></span></a> --C++源代码。 <br>20、<a href="http://www.moshier.net/"><span style="COLOR: #005eac"><u>http://www.moshier.net/</u></span></a> 天文学和数值软件源代码 <br>21、<a href="http://cplus.about.com/od/cgames/C_Games_with_Source_Code.htm"><span style="COLOR: #005eac"><u>http://cplus.about.com/od/cgames/C_Games_with_Source_Code.htm</u></span></a> --游戏有关的C++源代码。 <br>22、<a href="http://cliodhna.cop.uop.edu/~hetrick/c-sources.html"><span style="COLOR: #005eac"><u>http://cliodhna.cop.uop.edu/~hetrick/c-sources.html</u></span></a> --免费的C/C++数值计算源代码。 <br>23、<a href="http://www.mathtools.net/C_C__/Utilities/index.html"><span style="COLOR: #005eac"><u>http://www.mathtools.net/C_C__/Utilities/index.html</u></span></a> --C/C++工具。 <br>24、<a href="http://www.programmerworld.net/resources/c_library.htm"><span style="COLOR: #005eac"><u>http://www.programmerworld.net/resources/c_library.htm</u></span></a> --免费C++源代码和其它有用的工具。 <br>25、<a href="http://www.cmcrossroads.com/bradapp/links/cplusplus-links.html"><span style="COLOR: #005eac"><u>http://www.cmcrossroads.com/bradapp/links/cplusplus-links.html</u></span></a> --布拉德阿普尔顿的C++链接-资源，项目，图书馆，教学和编码。 <br>26、<a href="http://www.robertnz.net/cpp_site.html"><span style="COLOR: #005eac"><u>http://www.robertnz.net/cpp_site.html</u></span></a> --这是一个收集了数C/C++网站链接列表的网页。 <br>27、<a href="http://www.josuttis.com/libbook/examples.html"><span style="COLOR: #005eac"><u>http://www.josuttis.com/libbook/examples.html</u></span></a> --在这里，你可以看到并下载所有的本书的C++标准库例子 。 <br>28、<a href="ftp://66.77.27.238/sourcecode/cuj/"><span style="COLOR: #005eac"><u>ftp://66.77.27.238/sourcecode/cuj/</u></span></a> --C/C++用户杂志 <br>29、<a href="ftp://66.77.27.238/sourcecode/wd/"><span style="COLOR: #005eac"><u>ftp://66.77.27.238/sourcecode/wd/</u></span></a> --Windows开发者网络 <br>30、<a href="http://www.einet.net/directory/65892/Developers.htm"><span style="COLOR: #005eac"><u>http://www.einet.net/directory/65892/Developers.htm</u></span></a> --C程序 <br>31、<a href="http://www.daniweb.com/code/cplusplus.html"><span style="COLOR: #005eac"><u>http://www.daniweb.com/code/cplusplus.html</u></span></a> --实用代码段。 <br>32、<a href="http://snippets.dzone.com/tag/c"><span style="COLOR: #005eac"><u>http://snippets.dzone.com/tag/c</u></span></a> --C++源代码 <br>33、<a href="http://www.programmersheaven.com/tags/C"><span style="COLOR: #005eac"><u>http://www.programmersheaven.com/tags/C</u></span></a> --C++编程资源，programmersheaven.com <br>34、<a href="http://www.google.com/codesearch?hl=en&amp;lr=&amp;q=programming"><span style="COLOR: #005eac"><u>http://www.google.com/codesearch?hl=en&amp;lr=&amp;q=programming</u></span></a> --谷歌代码搜索-C++编程语言 <br>35、<a href="http://www.codepedia.com/1/Cpp"><span style="COLOR: #005eac"><u>http://www.codepedia.com/1/Cpp</u></span></a> --CodePedia是一个开放的关于系统编程和其他与电脑有关的议题的网站。 <br>36、<a href="http://www.codebeach.com/index.asp?TabID=1&amp;CategoryID=3"><span style="COLOR: #005eac"><u>http://www.codebeach.com/index.asp?TabID=1&amp;CategoryID=3</u></span></a> --C++源代码，Codebeach提供 <br>37、<a href="http://freshmeat.net/browse/165/"><span style="COLOR: #005eac"><u>http://freshmeat.net/browse/165/</u></span></a> --5000项目写的C++编程语言 <br>38、<a href="http://cplus.about.com/od/codelibrary/Code_Library_for_C_C_and_C.htm"><span style="COLOR: #005eac"><u>http://cplus.about.com/od/codelibrary/Code_Library_for_C_C_and_C.htm</u></span></a> --代码库C、C + +和C＃。 <br>39、<a href="http://www.c.happycodings.com/"><span style="COLOR: #005eac"><u>http://www.c.happycodings.com/</u></span></a> --Visual Basic、PHP、ASP技术、C、C++大全。 <br>40、<a href="http://www.blueparrots.com/"><span style="COLOR: #005eac"><u>http://www.blueparrots.com/</u></span></a> --Borland C游戏，图像和声音源代码范例。 <br>41、<a href="http://www.java2s.com/Code/Cpp/CatalogCpp.htm"><span style="COLOR: #005eac"><u>http://www.java2s.com/Code/Cpp/CatalogCpp.htm</u></span></a> --C++源代码。 <br>42、<a href="http://www.yeohhs.com/modules/mydownloads/"><span style="COLOR: #005eac"><u>http://www.yeohhs.com/modules/mydownloads/</u></span></a> --C与C++电子书和源代码示例。 <br>43、<a href="http://www.brpreiss.com/books/opus4/programs/index.html"><span style="COLOR: #005eac"><u>http://www.brpreiss.com/books/opus4/programs/index.html</u></span></a> C++的数学方程和公式源代码。 <br>44、<a href="http://users.cs.fiu.edu/"><span style="COLOR: #005eac"><u>http://users.cs.fiu.edu/</u></span></a> C++。 <br>45、<a href="http://www.josuttis.com/libbook/examples.html"><span style="COLOR: #005eac"><u>http://www.josuttis.com/libbook/examples.html</u></span></a> --C++标准库-教程和参考资料。 <br>46、<a href="http://emr.cs.uiuc.edu/~reingold/calendars.shtml"><span style="COLOR: #005eac"><u>http://emr.cs.uiuc.edu/~reingold/calendars.shtml</u></span></a> Edward M. Reingold's Calendar Book, Papers, and Code。 <br>47、<a href="http://cpp.snippets.org/"><span style="COLOR: #005eac"><u>http://cpp.snippets.org/</u></span></a> --c++源代码档案。 <br>48、<a href="http://ubiety.uwaterloo.ca/~tveldhui/papers/techniques/"><span style="COLOR: #005eac"><u>http://ubiety.uwaterloo.ca/~tveldhui/papers/techniques/</u></span></a> --用C和C++的解决科学问题。 <br>49、<a href="http://c.ittoolbox.com/topics/core-c/"><span style="COLOR: #005eac"><u>http://c.ittoolbox.com/topics/core-c/</u></span></a> --C/C++的IT工具框。 <br>50、<a href="http://www.le.ac.uk/cc/tutorials/c/ccccdbas.html"><span style="COLOR: #005eac"><u>http://www.le.ac.uk/cc/tutorials/c/ccccdbas.html</u></span></a> --本文件中包含有大量的C示例程序。</p>
</div>
<script type=text/javascript><!--
google_ad_client = "pub-1076724771190722";
/* JE个人博客468x60 */
google_ad_slot = "5506163105";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script src="http://pagead2.googlesyndication.com/pagead/show_ads.js" type=text/javascript>
</script>
<script src="http://pagead2.googlesyndication.com/pagead/expansion_embed.js"></script>
<script src="http://googleads.g.doubleclick.net/pagead/test_domain.js"></script>
<script src="http://pagead2.googlesyndication.com/pagead/render_ads.js"></script>
<script>google_protectAndRun("render_ads.js::google_render_ad", google_handleError, google_render_ad);</script>
<img src ="http://www.cppblog.com/zzfmars/aggbug/124061.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zzfmars/" target="_blank">Kevin_Zhang</a> 2010-08-20 09:38 <a href="http://www.cppblog.com/zzfmars/archive/2010/08/20/124061.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>strcat-函数功能</title><link>http://www.cppblog.com/zzfmars/archive/2010/08/19/123907.html</link><dc:creator>Kevin_Zhang</dc:creator><author>Kevin_Zhang</author><pubDate>Wed, 18 Aug 2010 17:19:00 GMT</pubDate><guid>http://www.cppblog.com/zzfmars/archive/2010/08/19/123907.html</guid><wfw:comment>http://www.cppblog.com/zzfmars/comments/123907.html</wfw:comment><comments>http://www.cppblog.com/zzfmars/archive/2010/08/19/123907.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zzfmars/comments/commentRss/123907.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zzfmars/services/trackbacks/123907.html</trackback:ping><description><![CDATA[<p sizset="29" sizcache="0">原型：extern char *strcat(char *dest,char *src);<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;用法：#include &lt;string.h&gt;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;功能：把src所指<a class=innerlink title=字符 href="http://www.hudong.com/wiki/%E5%AD%97%E7%AC%A6" jQuery1282151723265="3"><font color=#0268cd>字符</font></a>串添加到dest结尾处(<a class=innerlink title=覆盖 href="http://www.hudong.com/wiki/%E8%A6%86%E7%9B%96" target=_blank jQuery1282151723265="4"><font color=#0268cd>覆盖</font></a>dest结尾处的'\0')并添加'\0'。<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;说明：src和dest所指<a class=innerlink title=内存 href="http://www.hudong.com/wiki/%E5%86%85%E5%AD%98" target=_blank jQuery1282151723265="5"><font color=#0268cd>内存</font></a>区域不可以<a class=innerlink title=重叠 href="http://www.hudong.com/wiki/%E9%87%8D%E5%8F%A0" target=_blank jQuery1282151723265="6"><font color=#0268cd>重叠</font></a>且dest必须有足够的<a class=innerlink title=空间 href="http://www.hudong.com/wiki/%E7%A9%BA%E9%97%B4" target=_blank jQuery1282151723265="7"><font color=#0268cd>空间</font></a>来容纳src的字符串。<br>&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;返回指向dest的<a class=innerlink title=指针 href="http://www.hudong.com/wiki/%E6%8C%87%E9%92%88" target=_blank jQuery1282151723265="8"><font color=#0268cd>指针</font></a>。<br><a href="http://www.hudong.com/wiki/strcat?hf=youdaocitiao&amp;pf=youdaocitiao">http://www.hudong.com/wiki/strcat?hf=youdaocitiao&amp;pf=youdaocitiao</a></p>
<img src ="http://www.cppblog.com/zzfmars/aggbug/123907.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zzfmars/" target="_blank">Kevin_Zhang</a> 2010-08-19 01:19 <a href="http://www.cppblog.com/zzfmars/archive/2010/08/19/123907.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>INT_MAX</title><link>http://www.cppblog.com/zzfmars/archive/2010/08/14/123422.html</link><dc:creator>Kevin_Zhang</dc:creator><author>Kevin_Zhang</author><pubDate>Sat, 14 Aug 2010 04:31:00 GMT</pubDate><guid>http://www.cppblog.com/zzfmars/archive/2010/08/14/123422.html</guid><wfw:comment>http://www.cppblog.com/zzfmars/comments/123422.html</wfw:comment><comments>http://www.cppblog.com/zzfmars/archive/2010/08/14/123422.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zzfmars/comments/commentRss/123422.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zzfmars/services/trackbacks/123422.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 src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><span style="COLOR: #000000">#include</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>#include</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">math.h</span><span style="COLOR: #000000">"</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">int</span><span style="COLOR: #000000">&nbsp;a;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;b;<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_85_161_Open_Image onclick="this.style.display='none'; Codehighlighter1_85_161_Open_Text.style.display='none'; Codehighlighter1_85_161_Closed_Image.style.display='inline'; Codehighlighter1_85_161_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_85_161_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_85_161_Closed_Text.style.display='none'; Codehighlighter1_85_161_Open_Image.style.display='inline'; Codehighlighter1_85_161_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_85_161_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_85_161_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;a</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">INT_MAX;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top>&nbsp;&nbsp;&nbsp;&nbsp;b</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">pow(</span><span style="COLOR: #000000">2.0</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">31</span><span style="COLOR: #000000">)</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><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">a</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<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">b</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">endl;<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>
<br><br><br><br><br><br><br><br><br><br>---------------------------------------------------------------------
<img src ="http://www.cppblog.com/zzfmars/aggbug/123422.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zzfmars/" target="_blank">Kevin_Zhang</a> 2010-08-14 12:31 <a href="http://www.cppblog.com/zzfmars/archive/2010/08/14/123422.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>typedef 用法</title><link>http://www.cppblog.com/zzfmars/archive/2010/08/14/123408.html</link><dc:creator>Kevin_Zhang</dc:creator><author>Kevin_Zhang</author><pubDate>Sat, 14 Aug 2010 01:55:00 GMT</pubDate><guid>http://www.cppblog.com/zzfmars/archive/2010/08/14/123408.html</guid><wfw:comment>http://www.cppblog.com/zzfmars/comments/123408.html</wfw:comment><comments>http://www.cppblog.com/zzfmars/archive/2010/08/14/123408.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/zzfmars/comments/commentRss/123408.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/zzfmars/services/trackbacks/123408.html</trackback:ping><description><![CDATA[<a href="http://baike.baidu.com/view/1283800.htm">http://baike.baidu.com/view/1283800.htm</a><br><a href="http://zhouwenjun.javaeye.com/blog/646392">http://zhouwenjun.javaeye.com/blog/646392</a><br><br>
<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 src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top><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><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">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pa,&nbsp;pb;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;这多数不符合我们的意图，它只声明了一个指向字符变量的指针，&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;和一个字符变量；</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">以下则可行：<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>typedef&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;PCHAR;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;一般用大写</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">PCHAR&nbsp;pa,&nbsp;pb;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;可行，同时声明了两个指向字符变量的指针</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">虽然：<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pa,&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pb;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>也可行，但相对来说没有用typedef的形式直观，尤其在需要大量指针的地方，typedef的方式更省事。<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><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>用在旧的C的代码中（具体多旧没有查），帮助struct。以前的代码中，声明struct新对象时，必须要带上struct，即形式为：&nbsp;</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;结构名&nbsp;对象名，如：<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;tagPOINT1<br><img id=Codehighlighter1_371_387_Open_Image onclick="this.style.display='none'; Codehighlighter1_371_387_Open_Text.style.display='none'; Codehighlighter1_371_387_Closed_Image.style.display='inline'; Codehighlighter1_371_387_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_371_387_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_371_387_Closed_Text.style.display='none'; Codehighlighter1_371_387_Open_Image.style.display='inline'; Codehighlighter1_371_387_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_371_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_371_387_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;x;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;y;<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></span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;tagPOINT1&nbsp;p1;&nbsp;<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>而在C</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">中，则可以直接写：结构名&nbsp;对象名，即：<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>tagPOINT1&nbsp;p1;<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>估计某人觉得经常多写一个struct太麻烦了，于是就发明了：<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>typedef&nbsp;</span><span style="COLOR: #0000ff">struct</span><span style="COLOR: #000000">&nbsp;tagPOINT<br><img id=Codehighlighter1_508_524_Open_Image onclick="this.style.display='none'; Codehighlighter1_508_524_Open_Text.style.display='none'; Codehighlighter1_508_524_Closed_Image.style.display='inline'; Codehighlighter1_508_524_Closed_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif" align=top><img id=Codehighlighter1_508_524_Closed_Image style="DISPLAY: none" onclick="this.style.display='none'; Codehighlighter1_508_524_Closed_Text.style.display='none'; Codehighlighter1_508_524_Open_Image.style.display='inline'; Codehighlighter1_508_524_Open_Text.style.display='inline';" src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif" align=top></span><span id=Codehighlighter1_508_524_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_508_524_Open_Text><span style="COLOR: #000000">{<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;x;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif" align=top></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;y;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif" align=top>}</span></span><span style="COLOR: #000000">POINT;<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>POINT&nbsp;p1;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;这样就比原来的方式少写了一个struct，比较省事，尤其在大量使用的时候</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>或许，在C</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">中，typedef的这种用途二不是很大，但是理解了它，对掌握以前的旧代码还是有帮助的，毕竟我们在项目中有可能会遇到较早些年代遗留下来的代码。<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><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>用typedef来定义与平台无关的类型。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>比如定义一个叫&nbsp;REAL&nbsp;的浮点类型，在目标平台一上，让它表示最高精度的类型为：<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>typedef&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;REAL;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>在不支持&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;的平台二上，改为：<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>typedef&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;REAL;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>在连&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;都不支持的平台三上，改为：<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>typedef&nbsp;</span><span style="COLOR: #0000ff">float</span><span style="COLOR: #000000">&nbsp;REAL;&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>也就是说，当跨平台时，只要改下&nbsp;typedef&nbsp;本身就行，不用对其他源码做任何修改。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>标准库就广泛使用了这个技巧，比如size_t。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>另外，因为typedef是定义了一种类型的新别名，不是简单的字符串替换，所以它比宏来得稳健（虽然用宏有时也可以完成以上的用途）。<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><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></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">.&nbsp;原声明：</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">a[</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">])(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>变量名为a，直接用一个新别名pFun替换a就可以了：<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>typedef&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pFun)(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">);&nbsp;<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>pFun&nbsp;a[</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">];&nbsp;<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: #000000">2</span><span style="COLOR: #000000">.&nbsp;原声明：</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">b[</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">])&nbsp;(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)());<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>变量名为b，先替换右边部分括号里的，pFunParam为别名一：<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>typedef&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pFunParam)();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>再替换左边的变量b，pFunx为别名二：<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>typedef&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pFunx)(pFunParam);<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>pFunx&nbsp;b[</span><span style="COLOR: #000000">10</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: #000000">3</span><span style="COLOR: #000000">.&nbsp;原声明：doube(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)()&nbsp;(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">e)[</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000">];&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>变量名为e，先替换左边部分，pFuny为别名一：<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>typedef&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pFuny)();<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>再替换右边的变量e，pFunParamy为别名二<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>typedef&nbsp;pFuny&nbsp;(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pFunParamy)[</span><span style="COLOR: #000000">9</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>pFunParamy&nbsp;e;&nbsp;<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>理解复杂声明可用的&#8220;右左法则&#8221;：<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;(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">func)(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>首先找到变量名func，外面有一对圆括号，而且左边是一个</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">号，这说明func是一个指针；然后跳出这个圆括号，先看右边，又遇到圆括号，这说明(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">func)是一个函数，所以func是一个指向这类函数的指针，即函数指针，这类函数具有int</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">类型的形参，返回值类型是int。<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;(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">func[</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">])(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">);<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>func右边是一个[]运算符，说明func是具有5个元素的数组；func的左边有一个</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">，说明func的元素是指针（注意这里的</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">不是修饰func，而是修饰func[</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">]的，原因是[]运算符优先级比</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">高，func先跟[]结合）。跳出这个括号，看右边，又遇到圆括号，说明func数组的元素是函数类型的指针，它指向的函数具有int</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">类型的形参，返回值类型为int。<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>也可以记住2个模式：<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>type&nbsp;(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)(<img src="http://www.cppblog.com/Images/dot.gif">.)函数指针&nbsp;<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>type&nbsp;(</span><span style="COLOR: #000000">*</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><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>记住，typedef是定义了一种类型的新别名，不同于宏，它不是简单的字符串替换。比如：<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>typedef&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;PSTR;<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;mystrcmp(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;PSTR,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;PSTR);<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">const</span><span style="COLOR: #000000">&nbsp;PSTR实际上相当于const&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">吗？不是的，它实际上相当于char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>原因在于const给予了整个指针本身以常量性，也就是形成了常量指针char</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">。<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>简单来说，记住当const和typedef一起出现时，typedef不会是简单的字符串替换就行。<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><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>typedef在语法上是一个存储类的关键字（如auto、</span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000">、mutable、</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">、register等一样），虽然它并不真正影响对象的存储特性，如：<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>typedef&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;INT2;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">不可行</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000">编译将失败，会提示&#8220;指定了一个以上的存储类&#8221;。<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>以上资料出自：http:</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">blog.sina.com.cn/s/blog_4826f7970100074k.html&nbsp;作者：赤龙</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></span><span style="COLOR: #000000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>第三、typedef&nbsp;与&nbsp;#define的区别<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><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>通常讲，typedef要比#define要好，特别是在有指针的场合。请看例子：<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>typedef&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pStr1;<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">#define</span><span style="COLOR: #000000">&nbsp;pStr2&nbsp;char&nbsp;*;</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>pStr1&nbsp;s1,&nbsp;s2;<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>pStr2&nbsp;s3,&nbsp;s4;<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>在上述的变量定义中，s1、s2、s3都被定义为char&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">，而s4则定义成了char，不是我们所预期的指针变量，根本原因就在于#define只是简单的字符串替换而typedef则是为一个类型起新名字。<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><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>typedef&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pStr;<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">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">[</span><span style="COLOR: #000000">4</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">abc</span><span style="COLOR: #000000">"</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">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">p1&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">string</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">const</span><span style="COLOR: #000000">&nbsp;pStr&nbsp;p2&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">string</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>p1</span><span style="COLOR: #000000">++</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>p2</span><span style="COLOR: #000000">++</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>是p2</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">出错了。这个问题再一次提醒我们：typedef和#define不同，它不是简单的文本替换。上述代码中const&nbsp;pStr&nbsp;p2并不等于const&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;p2。</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;pStr&nbsp;p2和const&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;x本质上没有区别，都是对变量进行只读限制，只不过此处变量p2的数据类型是我们自己定义的而不是系统固有类型而已。因此，</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;pStr&nbsp;p2的含义是：限定数据类型为char&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">的变量p2为只读，因此p2</span><span style="COLOR: #000000">++</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>第四部分资料：使用&nbsp;typedef&nbsp;抑制劣质代码<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>作者：Danny&nbsp;Kalev<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>编译：MTT&nbsp;工作室<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>原文出处：Using&nbsp;typedef&nbsp;to&nbsp;Curb&nbsp;Miscreant&nbsp;Code<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>摘要：Typedef&nbsp;声明有助于创建平台无关类型，甚至能隐藏复杂和难以理解的语法。不管怎样，使用&nbsp;typedef&nbsp;能为代码带来意想不到的好处，通过本文你可以学习用&nbsp;typedef&nbsp;避免缺欠，从而使代码更健壮。&nbsp;<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>typedef&nbsp;声明，简称&nbsp;typedef，为现有类型创建一个新的名字。比如人们常常使用&nbsp;typedef&nbsp;来编写更美观和可读的代码。所谓美观，意指&nbsp;typedef&nbsp;能隐藏笨拙的语法构造以及平台相关的数据类型，从而增强可移植性和以及未来的可维护性。本文下面将竭尽全力来揭示&nbsp;typedef&nbsp;强大功能以及如何避免一些常见的陷阱。<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>Q：如何创建平台无关的数据类型，隐藏笨拙且难以理解的语法</span><span style="COLOR: #000000">?</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>A：&nbsp;使用&nbsp;typedefs&nbsp;为现有类型创建同义字。&nbsp;<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>　　typedef&nbsp;使用最多的地方是创建易于记忆的类型名，用它来归档程序员的意图。类型出现在所声明的变量名字中，位于&nbsp;</span><span style="COLOR: #000000">''</span><span style="COLOR: #000000">typedef</span><span style="COLOR: #000000">''</span><span style="COLOR: #000000">&nbsp;关键字右边。例如：<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>typedef&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;size;此声明定义了一个&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;的同义字，名字为&nbsp;size。注意&nbsp;typedef&nbsp;并不创建新的类型。它仅仅为现有类型添加一个同义字。你可以在任何需要&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;的上下文中使用&nbsp;size：<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;measure(size&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;psz);&nbsp;size&nbsp;array[</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">];size&nbsp;len&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;file.getlength();std::vector&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">size</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">&nbsp;vs;&nbsp;typedef&nbsp;还可以掩饰符合类型，如指针和数组。例如，你不用象下面这样重复定义有&nbsp;</span><span style="COLOR: #000000">81</span><span style="COLOR: #000000">&nbsp;个字符元素的数组：<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">char</span><span style="COLOR: #000000">&nbsp;line[</span><span style="COLOR: #000000">81</span><span style="COLOR: #000000">];</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;text[</span><span style="COLOR: #000000">81</span><span style="COLOR: #000000">];定义一个&nbsp;typedef，每当要用到相同类型和大小的数组时，可以这样：<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>typedef&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;Line[</span><span style="COLOR: #000000">81</span><span style="COLOR: #000000">];&nbsp;Line&nbsp;text,&nbsp;secondline;getline(text);同样，可以象下面这样隐藏指针语法：<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>typedef&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;pstr;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;mystrcmp(pstr,&nbsp;pstr);这里将带我们到达第一个&nbsp;typedef&nbsp;陷阱。标准函数&nbsp;strcmp()有两个&#8216;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&#8217;类型的参数。因此，它可能会误导人们象下面这样声明&nbsp;mystrcmp()：<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;mystrcmp(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;pstr,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;pstr);&nbsp;这是错误的，按照顺序，&#8216;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;pstr&#8217;被解释为&#8216;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&#8217;（一个指向&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;的常量指针），而不是&#8216;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&#8217;（指向常量&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;的指针）。这个问题很容易解决：<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>typedef&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;cpstr;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;mystrcmp(cpstr,&nbsp;cpstr);&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;现在是正确的记住：不管什么时候，只要为指针声明&nbsp;typedef，那么都要在最终的&nbsp;typedef&nbsp;名称中加一个&nbsp;const，以使得该指针本身是常量，而不是对象。</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></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>　　上面讨论的&nbsp;typedef&nbsp;行为有点像&nbsp;</span><span style="COLOR: #0000ff">#define</span><span style="COLOR: #000000">&nbsp;宏，用其实际类型替代同义字。不同点是&nbsp;typedef&nbsp;在编译时被解释，因此让编译器来应付超越预处理器能力的文本替换。例如：</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>typedef&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">PF)&nbsp;(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">);这个声明引入了&nbsp;PF&nbsp;类型作为函数指针的同义字，该函数有两个&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">&nbsp;类型的参数以及一个&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;类型的返回值。如果要使用下列形式的函数声明，那么上述这个&nbsp;typedef&nbsp;是不可或缺的：<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>PF&nbsp;Register(PF&nbsp;pf);Register()&nbsp;的参数是一个&nbsp;PF&nbsp;类型的回调函数，返回某个函数的地址，其署名与先前注册的名字相同。做一次深呼吸。下面我展示一下如果不用&nbsp;typedef，我们是如何实现这个声明的：<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;(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">Register&nbsp;(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">pf)(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">)))&nbsp;(</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">const</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">);&nbsp;很少有程序员理解它是什么意思，更不用说这种费解的代码所带来的出错风险了。显然，这里使用&nbsp;typedef&nbsp;不是一种特权，而是一种必需。持怀疑态度的人可能会问：&#8220;OK，有人还会写这样的代码吗？&#8221;，快速浏览一下揭示&nbsp;signal()函数的头文件&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">csinal</span><span style="COLOR: #000000">&gt;</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>typedef&nbsp;和存储类关键字（storage&nbsp;</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;specifier）<br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top>　　这种说法是不是有点令人惊讶，typedef&nbsp;就像&nbsp;auto，</span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000">，mutable，</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">，和&nbsp;register&nbsp;一样，是一个存储类关键字。这并是说&nbsp;typedef&nbsp;会真正影响对象的存储特性；它只是说在语句构成上，typedef&nbsp;声明看起来象&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">，</span><span style="COLOR: #0000ff">extern</span><span style="COLOR: #000000">&nbsp;等类型的变量声明。下面将带到第二个陷阱：<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>typedef&nbsp;register&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;FAST_COUNTER;&nbsp;</span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">&nbsp;错误编译通不过。问题出在你不能在声明中有多个存储类关键字。因为符号&nbsp;typedef&nbsp;已经占据了存储类关键字的位置，在&nbsp;typedef&nbsp;声明中不能用&nbsp;register（或任何其它存储类关键字）。</span><span style="COLOR: #008000"><br><img src="http://www.cppblog.com/Images/OutliningIndicators/None.gif" align=top></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>　　typedef&nbsp;有另外一个重要的用途，那就是定义机器无关的类型，例如，你可以定义一个叫&nbsp;REAL&nbsp;的浮点类型，在目标机器上它可以i获得最高的精度：<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>typedef&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;REAL;&nbsp;在不支持&nbsp;</span><span style="COLOR: #0000ff">long</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;的机器上，该&nbsp;typedef&nbsp;看起来会是下面这样：<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>typedef&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;REAL;&nbsp;并且，在连&nbsp;</span><span style="COLOR: #0000ff">double</span><span style="COLOR: #000000">&nbsp;都不支持的机器上，该&nbsp;typedef&nbsp;看起来会是这样：&nbsp;、<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>typedef&nbsp;</span><span style="COLOR: #0000ff">float</span><span style="COLOR: #000000">&nbsp;REAL;&nbsp;你不用对源代码做任何修改，便可以在每一种平台上编译这个使用&nbsp;REAL&nbsp;类型的应用程序。唯一要改的是&nbsp;typedef&nbsp;本身。在大多数情况下，甚至这个微小的变动完全都可以通过奇妙的条件编译来自动实现。不是吗</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;标准库广泛地使用&nbsp;typedef&nbsp;来创建这样的平台无关类型：size_t，ptrdiff&nbsp;和&nbsp;fpos_t&nbsp;就是其中的例子。此外，象&nbsp;std::</span><span style="COLOR: #0000ff">string</span><span style="COLOR: #000000">&nbsp;和&nbsp;std::ofstream&nbsp;这样的&nbsp;typedef&nbsp;还隐藏了长长的，难以理解的模板特化语法，例如：basic_string</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">,&nbsp;char_traits</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">，allocator</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;和&nbsp;basic_ofstream</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">,&nbsp;char_traits</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #0000ff">char</span><span style="COLOR: #000000">&gt;&gt;</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>　　Danny&nbsp;Kalev&nbsp;是一名通过认证的系统分析师，专攻&nbsp;C</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;和形式语言理论的软件工程师。</span><span style="COLOR: #000000">1997</span><span style="COLOR: #000000">&nbsp;年到&nbsp;</span><span style="COLOR: #000000">2000</span><span style="COLOR: #000000">&nbsp;年期间，他是&nbsp;C</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;标准委员会成员。最近他以优异成绩完成了他在普通语言学研究方面的硕士论文。&nbsp;业余时间他喜欢听古典音乐，阅读维多利亚时期的文学作品，研究&nbsp;Hittite、Basque&nbsp;和&nbsp;Irish&nbsp;Gaelic&nbsp;这样的自然语言。其它兴趣包括考古和地理。Danny&nbsp;时常到一些&nbsp;C</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;论坛并定期为不同的&nbsp;C</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;网站和杂志撰写文章。他还在教育机构讲授程序设计语言和应用语言课程。<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></div>
<img src ="http://www.cppblog.com/zzfmars/aggbug/123408.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zzfmars/" target="_blank">Kevin_Zhang</a> 2010-08-14 09:55 <a href="http://www.cppblog.com/zzfmars/archive/2010/08/14/123408.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>