﻿<?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++博客-茶博-随笔分类-c++开发具体技术</title><link>http://www.cppblog.com/yehongly/category/8544.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 31 Oct 2008 04:48:27 GMT</lastBuildDate><pubDate>Fri, 31 Oct 2008 04:48:27 GMT</pubDate><ttl>60</ttl><item><title>C时间函数集</title><link>http://www.cppblog.com/yehongly/archive/2008/10/20/64512.html</link><dc:creator>茶</dc:creator><author>茶</author><pubDate>Mon, 20 Oct 2008 10:31:00 GMT</pubDate><guid>http://www.cppblog.com/yehongly/archive/2008/10/20/64512.html</guid><wfw:comment>http://www.cppblog.com/yehongly/comments/64512.html</wfw:comment><comments>http://www.cppblog.com/yehongly/archive/2008/10/20/64512.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yehongly/comments/commentRss/64512.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yehongly/services/trackbacks/64512.html</trackback:ping><description><![CDATA[<strong><a href="http://blog.programfan.com/trackback.asp?id=6922">http://blog.programfan.com/trackback.asp?id=6922</a><br><br></strong>C语言的标准库函数包括一系列日期和时间处理函数，它们都在头文件中说明。下面列出了这些函数。在头文件中定义了三种类型：time_t，struct tm和clock_t。<br><span style="font-size: 10.5pt; font-family: verdana;">
<p><u>&nbsp;&nbsp;&nbsp; 在<time.h>中说明的C语言时间函数&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </time.h></u></p>
<p>&nbsp;&nbsp; time_t time(time_t *timer);</p>
<p>&nbsp;&nbsp; double difftime(time_t time1,time_t time2);</p>
<p>&nbsp;&nbsp; struct tm *gmtime(const time_t *timer);</p>
<p>&nbsp;&nbsp; struct&nbsp;tm *localtime(const time_t *timer);</p>
<p>&nbsp;&nbsp; char *asctime(const struct tm *timeptr);</p>
<p>&nbsp;&nbsp; char *ctime(const time_t *timer);</p>
<p>&nbsp;&nbsp; size_t strftime(char *s,size_t maxsize,const char *format,const struct tm *timeptr);</p>
<p>&nbsp;&nbsp; time_t mktime(struct tm *timeptr);</p>
<p>&nbsp;&nbsp; clock_t clock(void);</p>
</span>
<p>&nbsp;</p>
<p>&nbsp;&nbsp;&nbsp; 下面是我从网上收集到的时间函数集</p>
<p>&nbsp;</p>
<table border="0" cellpadding="0">
    <tbody>
        <tr>
            <td valign="top" width="80">
            <p align="right">&nbsp;</p>
            </td>
            <td valign="top"><br>asctime（将时间和日期以字符串格式表示） <br></td>
        </tr>
        <tr>
            <td valign="top" width="80">相关函数 <br></td>
            <td valign="top">time，ctime，gmtime，localtime<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">表头文件 <br></td>
            <td valign="top">#include<time.h><br></time.h></td>
        </tr>
        <tr>
            <td valign="top" width="80">定义函数 <br></td>
            <td valign="top">char * asctime(const struct tm * timeptr);<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">函数说明 <br></td>
            <td valign="top">asctime()将参数timeptr所指的tm结构中的信息转换成真实世界所使用的时间日期表示方法，然后将结果以字符串形态返回。此函数已经由时区转换成当地时间，字符串格式为:"Wed Jun 30 21:49:08 1993\n"<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">返回值 <br></td>
            <td valign="top">若再调用相关的时间日期函数，此字符串可能会被破坏。此函数与ctime不同处在于传入的参数是不同的结构。<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">附加说明 <br></td>
            <td valign="top">返回一字符串表示目前当地的时间日期。<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">范例 <br></td>
            <td valign="top">#include <time.h><br>main()<br>{<br>time_t timep;<br>time (&amp;timep);<br>printf("%s",asctime(gmtime(&amp;timep)));<br>}<br></time.h></td>
        </tr>
        <tr>
            <td valign="top" width="80">执行 <br></td>
            <td valign="top">Sat Oct 28 02:10:06 2000<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">　 <br><a name="linuxc33"></a>
            <td>
            <br></td>
        </tr>
        <tr>
            <td valign="top" width="80">&nbsp;</td>
            <td valign="top"><br>ctime（将时间和日期以字符串格式表示） <br></td>
        </tr>
        <tr>
            <td valign="top" width="80">相关函数 <br></td>
            <td valign="top">time，asctime，gmtime，localtime<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">表头文件 <br></td>
            <td valign="top">#include<time.h><br></time.h></td>
        </tr>
        <tr>
            <td valign="top" width="80">定义函数 <br></td>
            <td valign="top">char *ctime(const time_t *timep);<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">函数说明 <br></td>
            <td valign="top">ctime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法，然后将结果
            以字符串形态返回。此函数已经由时区转换成当地时间，字符串格式为"Wed Jun 30 21 :49 :08
            1993\n"。若再调用相关的时间日期函数，此字符串可能会被破坏。<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">返回值 <br></td>
            <td valign="top">返回一字符串表示目前当地的时间日期。<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">范例 <br></td>
            <td valign="top">#include<time.h><br>main()<br>{<br>time_t timep;<br>time (&amp;timep);<br>printf("%s",ctime(&amp;timep));<br>}<br></time.h></td>
        </tr>
        <tr>
            <td valign="top" width="80">执行 <br></td>
            <td valign="top">Sat Oct 28 10 : 12 : 05 2000<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">　 <br><a name="linuxc34"></a></td>
            <td>
            <br></td>
        </tr>
        <tr>
            <td valign="top" width="80">&nbsp;</td>
            <td valign="top"><br>gettimeofday（取得目前的时间） <br></td>
        </tr>
        <tr>
            <td valign="top" width="80">相关函数 <br></td>
            <td valign="top">time，ctime，ftime，settimeofday<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">表头文件 <br></td>
            <td valign="top">#include <sys time.h=""><br>#include <unistd.h><br></unistd.h></sys></td>
        </tr>
        <tr>
            <td valign="top" width="80">定义函数 <br></td>
            <td valign="top">int gettimeofday ( struct timeval * tv , struct timezone * tz )<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">函数说明 <br></td>
            <td valign="top">gettimeofday()会把目前的时间有tv所指的结构返回，当地时区的信息则放到tz所指的结构中。<br>timeval结构定义为:<br>struct timeval{<br>long tv_sec; /*秒*/<br>long tv_usec; /*微秒*/<br>};<br>timezone 结构定义为:<br>struct timezone{<br>int tz_minuteswest; /*和Greenwich 时间差了多少分钟*/<br>int tz_dsttime; /*日光节约时间的状态*/<br>};<br>上述两个结构都定义在/usr/include/sys/time.h。tz_dsttime 所代表的状态如下<br>DST_NONE /*不使用*/<br>DST_USA /*美国*/<br>DST_AUST /*澳洲*/<br>DST_WET /*西欧*/<br>DST_MET /*中欧*/<br>DST_EET /*东欧*/<br>DST_CAN /*加拿大*/<br>DST_GB /*大不列颠*/<br>DST_RUM /*罗马尼亚*/<br>DST_TUR /*土耳其*/<br>DST_AUSTALT /*澳洲（1986年以后）*/<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">返回值 <br></td>
            <td valign="top">成功则返回0，失败返回－1，错误代码存于errno。附加说明EFAULT指针tv和tz所指的内存空间超出存取权限。<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">范例 <br></td>
            <td valign="top">#include<sys time.h=""><br>#include<unistd.h><br>main(){<br>struct timeval tv;<br>struct timezone tz;<br>gettimeofday (&amp;tv , &amp;tz);<br>printf("tv_sec; %d\n", tv,.tv_sec) ;<br>printf("tv_usec; %d\n",tv.tv_usec);<br>printf("tz_minuteswest; %d\n", tz.tz_minuteswest);<br>printf("tz_dsttime, %d\n",tz.tz_dsttime);<br>}<br></unistd.h></sys></td>
        </tr>
        <tr>
            <td valign="top" width="80">执行 <br></td>
            <td valign="top">tv_sec: 974857339<br>tv_usec:136996<br>tz_minuteswest:-540<br>tz_dsttime:0<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">　 <br><a name="linuxc35"></a></td>
            <td>
            <br></td>
        </tr>
        <tr>
            <td valign="top" width="80">&nbsp;</td>
            <td valign="top"><br>gmtime（取得目前时间和日期） <br></td>
        </tr>
        <tr>
            <td valign="top" width="80">相关函数 <br></td>
            <td valign="top">time,asctime,ctime,localtime<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">表头文件 <br></td>
            <td valign="top">#include<time.h><br></time.h></td>
        </tr>
        <tr>
            <td valign="top" width="80">定义函数 <br></td>
            <td valign="top">struct tm*gmtime(const time_t*timep);<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">函数说明 <br></td>
            <td valign="top">gmtime()将参数timep 所指的time_t 结构中的信息转换成真实世界所使用的时间日期表示方法，然后将结果由结构tm返回。<br>结构tm的定义为<br>struct tm<br>{<br>int tm_sec;<br>int tm_min;<br>int tm_hour;<br>int tm_mday;<br>int tm_mon;<br>int tm_year;<br>int tm_wday;<br>int tm_yday;<br>int tm_isdst;<br>};<br>int tm_sec 代表目前秒数，正常范围为0-59，但允许至61秒<br>int tm_min 代表目前分数，范围0-59<br>int tm_hour 从午夜算起的时数，范围为0-23<br>int tm_mday 目前月份的日数，范围01-31<br>int tm_mon 代表目前月份，从一月算起，范围从0-11<br>int tm_year 从1900 年算起至今的年数<br>int tm_wday 一星期的日数，从星期一算起，范围为0-6<br>int tm_yday 从今年1月1日算起至今的天数，范围为0-365<br>int tm_isdst 日光节约时间的旗标<br>此函数返回的时间日期未经时区转换，而是UTC时间。<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">返回值 <br></td>
            <td valign="top">返回结构tm代表目前UTC 时间<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">范例 <br></td>
            <td valign="top">#include <time.h><br>main(){<br>char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};<br>time_t timep;<br>struct tm *p;<br>time(&amp;timep);<br>p=gmtime(&amp;timep);<br>printf("%d%d%d",(1900+p-&gt;tm_year), (1+p-&gt;tm_mon),p-&gt;tm_mday);<br>printf("%s%d;%d;%d\n", wday[p-&gt;tm_wday], p-&gt;tm_hour, p-&gt;tm_min, p-&gt;tm_sec);<br>}<br></time.h></td>
        </tr>
        <tr>
            <td valign="top" width="80">执行 <br></td>
            <td valign="top">2000/10/28 Sat 8:15:38<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">　 <br><a name="linuxc36"></a></td>
            <td>
            <br></td>
        </tr>
        <tr>
            <td valign="top" width="80">&nbsp;</td>
            <td valign="top"><br>localtime（取得当地目前时间和日期） <br></td>
        </tr>
        <tr>
            <td valign="top" width="80">相关函数 <br></td>
            <td valign="top">time, asctime, ctime, gmtime<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">表头文件 <br></td>
            <td valign="top">#include<time.h><br></time.h></td>
        </tr>
        <tr>
            <td valign="top" width="80">定义函数 <br></td>
            <td valign="top">struct tm *localtime(const time_t * timep);<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">函数说明 <br></td>
            <td valign="top">localtime()将参数timep所指的time_t结构中的信息转换成真实世界所使用的时间日期表示方法，然后将结果由结构tm返回。结构tm的定义请参考gmtime()。此函数返回的时间日期已经转换成当地时区。<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">返回值 <br></td>
            <td valign="top">返回结构tm代表目前的当地时间。<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">范例 <br></td>
            <td valign="top">#include<time.h><br>main(){<br>char *wday[]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};<br>time_t timep;<br>struct tm *p;<br>time(&amp;timep);<br>p=localtime(&amp;timep); /*取得当地时间*/<br>printf ("%d%d%d ", (1900+p-&gt;tm_year),( l+p-&gt;tm_mon), p-&gt;tm_mday);<br>printf("%s%d:%d:%d\n", wday[p-&gt;tm_wday],p-&gt;tm_hour, p-&gt;tm_min, p-&gt;tm_sec);<br>}<br></time.h></td>
        </tr>
        <tr>
            <td valign="top" width="80">执行 <br></td>
            <td valign="top">2000/10/28 Sat 11:12:22<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">　 <br><a name="linuxc37"></a></td>
            <td>
            <br></td>
        </tr>
        <tr>
            <td valign="top" width="80">&nbsp;</td>
            <td valign="top"><br>mktime（将时间结构数据转换成经过的秒数） <br></td>
        </tr>
        <tr>
            <td valign="top" width="80">相关函数 <br></td>
            <td valign="top">time，asctime，gmtime，localtime<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">表头文件 <br></td>
            <td valign="top">#include<time.h><br></time.h></td>
        </tr>
        <tr>
            <td valign="top" width="80">定义函数 <br></td>
            <td valign="top">time_t mktime(strcut tm * timeptr);<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">函数说明 <br></td>
            <td valign="top">mktime()用来将参数timeptr所指的tm结构数据转换成从公元1970年1月1日0时0分0 秒算起至今的UTC时间所经过的秒数。<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">返回值 <br></td>
            <td valign="top">返回经过的秒数。<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">范例 <br></td>
            <td valign="top">/* 用time()取得时间（秒数），利用localtime()<br>转换成struct tm 再利用mktine（）将struct tm转换成原来的秒数*/<br>#include<time.h><br>main()<br>{<br>time_t timep;<br>strcut tm *p;<br>time(&amp;timep);<br>printf("time() : %d \n",timep);<br>p=localtime(&amp;timep);<br>timep = mktime(p);<br>printf("time()-&gt;localtime()-&gt;mktime():%d\n",timep);<br>}<br></time.h></td>
        </tr>
        <tr>
            <td valign="top" width="80">执行 <br></td>
            <td valign="top">time():974943297<br>time()-&gt;localtime()-&gt;mktime():974943297<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">　 <br><a name="linuxc38"></a></td>
            <td>
            <br></td>
        </tr>
        <tr>
            <td valign="top" width="80">&nbsp;</td>
            <td valign="top"><br>settimeofday（设置目前时间） <br></td>
        </tr>
        <tr>
            <td valign="top" width="80">相关函数 <br></td>
            <td valign="top">time，ctime，ftime，gettimeofday<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">表头文件 <br></td>
            <td valign="top">#include<sys time.h=""><br>#include<unistd.h><br></unistd.h></sys></td>
        </tr>
        <tr>
            <td valign="top" width="80">定义函数 <br></td>
            <td valign="top">int settimeofday ( const struct timeval *tv,const struct timezone *tz);<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">函数说明 <br></td>
            <td valign="top">settimeofday()会把目前时间设成由tv所指的结构信息，当地时区信息则设成tz所指的结构。详细的说明请参考gettimeofday()。注意，只有root权限才能使用此函数修改时间。<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">返回值 <br></td>
            <td valign="top">成功则返回0，失败返回－1，错误代码存于errno。<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">错误代码 <br></td>
            <td valign="top">EPERM 并非由root权限调用settimeofday（），权限不够。<br>EINVAL 时区或某个数据是不正确的，无法正确设置时间。<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">　 <br><a name="linuxc39"></a></td>
            <td>
            <br></td>
        </tr>
        <tr>
            <td valign="top" width="80">&nbsp;</td>
            <td valign="top"><br>time（取得目前的时间） <br></td>
        </tr>
        <tr>
            <td valign="top" width="80">相关函数 <br></td>
            <td valign="top">ctime，ftime，gettimeofday<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">表头文件 <br></td>
            <td valign="top">#include<time.h><br></time.h></td>
        </tr>
        <tr>
            <td valign="top" width="80">定义函数 <br></td>
            <td valign="top">time_t time(time_t *t);<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">函数说明 <br></td>
            <td valign="top">此函数会返回从公元1970年1月1日的UTC时间从0时0分0秒算起到现在所经过的秒数。如果t 并非空指针的话，此函数也会将返回值存到t指针所指的内存。<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">返回值 <br></td>
            <td valign="top">成功则返回秒数，失败则返回((time_t)-1)值，错误原因存于errno中。<br></td>
        </tr>
        <tr>
            <td valign="top" width="80">范例 <br></td>
            <td valign="top">#include<time.h><br>mian()<br>{<br>int seconds= time((time_t*)NULL);<br>printf("%d\n",seconds);<br>}</time.h></td>
        </tr>
    </tbody>
</table>
<br> <img src ="http://www.cppblog.com/yehongly/aggbug/64512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yehongly/" target="_blank">茶</a> 2008-10-20 18:31 <a href="http://www.cppblog.com/yehongly/archive/2008/10/20/64512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>float转string，sprintf用法详解</title><link>http://www.cppblog.com/yehongly/archive/2008/09/21/62401.html</link><dc:creator>茶</dc:creator><author>茶</author><pubDate>Sun, 21 Sep 2008 08:35:00 GMT</pubDate><guid>http://www.cppblog.com/yehongly/archive/2008/09/21/62401.html</guid><wfw:comment>http://www.cppblog.com/yehongly/comments/62401.html</wfw:comment><comments>http://www.cppblog.com/yehongly/archive/2008/09/21/62401.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yehongly/comments/commentRss/62401.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yehongly/services/trackbacks/62401.html</trackback:ping><description><![CDATA[<div id="message3347072" class="t_msgfont">#include &lt;stdio.h&gt;;<br>
#include &lt;stdlib.h&gt;;<br>
<br>
char *floatToString(double fZ,const int slen,const int alen);<br>
<br>
main(int argc,char *argv[])<br>
{<br>
&nbsp; &nbsp;&nbsp; &nbsp;fprintf(stdout,"[%s]\n",floatToString(atof(argv[1]), atoi(argv[2]), atoi(argv[3])));<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;return;<br>
}<br>
<br>
char *floatToString(double fZ,const int slen,const int alen)<br>
{<br>
&nbsp; &nbsp;&nbsp; &nbsp;char tmpstr[256];<br>
<br>
&nbsp; &nbsp;&nbsp; &nbsp;memset(tmpstr,'\0',256);<br>
&nbsp; &nbsp;&nbsp; &nbsp;sprintf(tmpstr,"%*.*lf",slen,alen,fZ); //-- 这里控制精度<br>
&nbsp; &nbsp;&nbsp; &nbsp;return(tmpstr);<br>
}</div><img src ="http://www.cppblog.com/yehongly/aggbug/62401.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yehongly/" target="_blank">茶</a> 2008-09-21 16:35 <a href="http://www.cppblog.com/yehongly/archive/2008/09/21/62401.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++文件读写函数介绍 </title><link>http://www.cppblog.com/yehongly/archive/2008/09/12/61697.html</link><dc:creator>茶</dc:creator><author>茶</author><pubDate>Fri, 12 Sep 2008 09:07:00 GMT</pubDate><guid>http://www.cppblog.com/yehongly/archive/2008/09/12/61697.html</guid><wfw:comment>http://www.cppblog.com/yehongly/comments/61697.html</wfw:comment><comments>http://www.cppblog.com/yehongly/archive/2008/09/12/61697.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yehongly/comments/commentRss/61697.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yehongly/services/trackbacks/61697.html</trackback:ping><description><![CDATA[http://www.zxbc.cn/html/cjjhs/1413524521078.html<br><br>今天给大家介绍一下C++中常用到的读写函数，新手可以收藏一下，方便以后查找。&nbsp; <br>　　1.fopen() <br>　　fopen的原型是：FILE&nbsp;*fopen(const&nbsp;char&nbsp;*filename,const&nbsp;char&nbsp;*mode)，fopen实现三个功能：为使用而打开一个流，把一个文件和此流相连接，给此流返回一个FILR指针。 <br>　　参数filename指向要打开的文件名，mode表示打开状态的字符串，其取值如下： <br>　　字符串&nbsp;含义 <br>　　"r"&nbsp;以只读方式打开文件 <br>　　"w"&nbsp;以只写方式打开文件 <br>　　"a"&nbsp;以追加方式打开文件 <br>　　"r+"&nbsp;以读/写方式打开文件，如无文件出错 <br>　　"w+"&nbsp;以读/写方式打开文件，如无文件生成新文件 <br>
一个文件可以以文本模式或二进制模式打开，这两种的区别是：在文本模式中回车被当成一个字符&#8217;\n&#8217;，而二进制模式认为它是两个字符
0x0D,0x0A;如果在文件中读到0x1B，文本模式会认为这是文件结束符，也就是二进制模型不会对文件进行处理，而文本方式会按一定的方式对数据作
相应的转换。 <br>　　系统默认的是以文本模式打开，可以修改全部变量_fmode的值来修改这个设置，例如_fmode=O_TEXT;就设置默认打开方式为文本模式;而_fmode=O_BINARY;则设置默认打开方式是二进制模式。 <br>　　我们也可以在模式字符串中指定打开的模式，如"rb"表示以二进制模式打开只读文件，"w+t"或"wt+"表示以文本模式打开读/写文件。 <br>　　此函数返回一个FILE指针，所以申明一个FILE指针后不用初始化，而是用fopen()来返回一个指针并与一个特定的文件相连，如果成败，返回NULL，中国自学编程网，<a href="http://www.zxbc.cn/html/cjjhs/1413524521078.html">www.zxbc.cn</a> 。 <br>　　例: <br>　　&nbsp;以下是引用片段： <br>FILE&nbsp;*fp;&nbsp; <br>　　if(fp=fopen("123.456","wb"))&nbsp; <br>　　puts("打开文件成功");&nbsp; <br>　　else&nbsp; <br>　　puts("打开文件成败"); <br>　　2.fclose() <br>　　fclose()的功能就是关闭用fopen()打开的文件，其原型是：int&nbsp;fclose(FILE&nbsp;*fp);如果成功，返回0,失败返回EOF。 <br>　　在程序结束时一定要记得关闭打开的文件，不然可能会造成数据丢失的情况，我以前就经常犯这样的错误。 <br>　　例：fclose(fp); <br>　　3.fputc() <br>　　向流写一个字符，原型是int&nbsp;fputc(int&nbsp;c,&nbsp;FILE&nbsp;*stream);&nbsp;成功返回这个字符,失败返回EOF。 <br>　　例：fputc(&#8217;X&#8217;,fp); <br>　　4.fgetc() <br>　　从流中读一个字符，原型是int&nbsp;fputc(FILE&nbsp;*stream);&nbsp;成功返回这个字符,失败返回EOF。 <br>　　例：char&nbsp;ch1=fgetc(fp); <br>　　5.&nbsp;fseek() <br>
此函数一般用于二进制模式打开的文件中，功能是定位到流中指定的位置，原型是
int&nbsp;fseek(FILE&nbsp;*stream,&nbsp;long&nbsp;offset,&nbsp;int&nbsp;whence);如果成功返回0，参数offset是移动的字符
数，whence是移动的基准，取值是： <br>　　符号常量&nbsp;值&nbsp;基准位置 <br>　　SEEK_SET&nbsp;0&nbsp;文件开头 <br>　　SEEK_CUR&nbsp;1&nbsp;当前读写的位置 <br>　　SEEK_END&nbsp;2&nbsp;文件尾部 <br>　　例：fseek(fp,1234L,SEEK_CUR);//把读写位置从当前位置向后移动1234字节(L后缀表示长整数) <br>　　fseek(fp,0L,2);//把读写位置移动到文件尾 <br>　　6.fputs() <br>　　写一个字符串到流中，原型int&nbsp;fputs(const&nbsp;char&nbsp;*s,&nbsp;FILE&nbsp;*stream); <br>&nbsp;&nbsp;&nbsp; 例：fputs("I&nbsp;Love&nbsp;You",fp); <br>　　7.fgets() <br>　　从流中读一行或指定个字符，原型是char&nbsp;*fgets(char&nbsp;*s,&nbsp;int&nbsp;n,&nbsp;FILE&nbsp;*stream);&nbsp;从流中读取n-1个字符，除非读完一行，参数s是来接收字符串，如果成功则返回s的指针，否则返回NULL。 <br>　　例：如果一个文件的当前位置的文本如下： <br>　　Love&nbsp;,I&nbsp;Have <br>　　But&nbsp;&#8230;&#8230;.. <br>　　如果用 <br>　　fgets(str1,4,file1); <br>　　则执行后str1="Lov"，读取了4-1=3个字符，而如果用 <br>　　fgets(str1,23,file1); <br>　　则执行str="Love&nbsp;,I&nbsp;Have"，读取了一行(不包括行尾的&#8217;\n&#8217;)。 <br>　　8.fprintf() <br>　　按格式输入到流，其原型是int&nbsp;fprintf(FILE&nbsp;*stream,&nbsp;const&nbsp;char&nbsp;*format[,&nbsp;argument,&nbsp;&#8230;]);其用法和printf()相同，不过不是写到控制台，而是写到流罢了。 <br>　　例：fprintf(fp,"%2d%s",4,"Hahaha"); <br>　　9.fscanf() <br>　　从流中按格式读取，其原型是int&nbsp;fscanf(FILE&nbsp;*stream,&nbsp;const&nbsp;char&nbsp;*format[,&nbsp;address,&nbsp;&#8230;]);其用法和scanf()相同，不过不是从控制台读取，而是从流读取罢了。 <br>　　例：fscanf(fp,"%d%d"&nbsp;,&amp;x,&amp;y); <br>　　10.feof() <br>　　检测是否已到文件尾，是返回真，否则返回0，其原型是int&nbsp;feof(FILE&nbsp;*stream); <br>　　例：if(feof(fp))printf("已到文件尾"); <br>　　11.ferror() <br>　　原型是int&nbsp;ferror(FILE&nbsp;*stream);返回流最近的错误代码，可用clearerr()来清除它，clearerr()的原型是void&nbsp;clearerr(FILE&nbsp;*stream); <br>　　例：printf("%d",ferror(fp)); <br>　　12.rewind() <br>　　把当前的读写位置回到文件开始，原型是void&nbsp;rewind(FILE&nbsp;*stream);其实本函数相当于fseek(fp,0L,SEEK_SET); <br>　　例：rewind(fp); <br>　　12.remove() <br>　　删除文件，原型是int&nbsp;remove(const&nbsp;char&nbsp;*filename);&nbsp;参数就是要删除的文件名，成功返回0。 <br>　　例：remove("c:\\io.sys"); <br>　　13.fread() <br>
从流中读指定个数的字符，原型是
size_t&nbsp;fread(void&nbsp;*ptr,&nbsp;size_t&nbsp;size,&nbsp;size_t&nbsp;n,&nbsp;FILE&nbsp;*stream);参数ptr是保存读取的
数据，void*的指针可用任何类型的指针来替换，如char*、int&nbsp;*等等来替换;size是每块的字节数;n是读取的块数，如果成功，返回实际读
取的块数(不是字节数)，本函数一般用于二进制模式打开的文件中。 <br>　　例： <br>　　&nbsp;以下是引用片段： <br>char&nbsp;x[4230];&nbsp; <br>　　FILE&nbsp;*file1=fopen("c:\\msdos.sys","r");&nbsp; <br>　　fread(x,200,12&nbsp;,file1);//共读取200*12=2400个字节 <br>　　14.fwrite() <br>
与fread对应，向流中写指定的数据，原型是
size_t&nbsp;fwrite(const&nbsp;void&nbsp;*ptr,&nbsp;size_t&nbsp;size,&nbsp;size_t&nbsp;n,&nbsp;FILE&nbsp;*stream);参数
ptr是要写入的数据指针，void*的指针可用任何类型的指针来替换，如char*、int&nbsp;*等等来替换;size是每块的字节数;n是要写的块数，
如果成功，返回实际写入的块数(不是字节数)，本函数一般用于二进制模式打开的文件中。<br>&nbsp;&nbsp;&nbsp; 例： <br>　　&nbsp;以下是引用片段： <br>　　char&nbsp;x[]="I&nbsp;Love&nbsp;You";&nbsp; <br>　　fwire(x,&nbsp;6,12,fp);//写入6*12=72字节&nbsp; <br>　　将把"I&nbsp;Love"写到流fp中12次，共72字节 <br>　　15.tmpfile() <br>　　其原型是FILE&nbsp;*tmpfile(void);&nbsp;生成一个临时文件，以"w+b"的模式打开，并返回这个临时流的指针，如果失败返回NULL。在程序结束时，这个文件会被自动删除。 <br>　　例：FILE&nbsp;*fp=tmpfile(); <br>　　16.tmpnam(); <br>　　其原型为char&nbsp;*tmpnam(char&nbsp;*s);&nbsp;生成一个唯一的文件名，其实tmpfile()就调用了此函数，参数s用来保存得到的文件名，并返回这个指针，如果失败，返回NULL。 <br>　　例：tmpnam(str1);<br><br> <img src ="http://www.cppblog.com/yehongly/aggbug/61697.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yehongly/" target="_blank">茶</a> 2008-09-12 17:07 <a href="http://www.cppblog.com/yehongly/archive/2008/09/12/61697.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>STL vector 容器介绍</title><link>http://www.cppblog.com/yehongly/archive/2008/09/04/60925.html</link><dc:creator>茶</dc:creator><author>茶</author><pubDate>Thu, 04 Sep 2008 09:06:00 GMT</pubDate><guid>http://www.cppblog.com/yehongly/archive/2008/09/04/60925.html</guid><wfw:comment>http://www.cppblog.com/yehongly/comments/60925.html</wfw:comment><comments>http://www.cppblog.com/yehongly/archive/2008/09/04/60925.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yehongly/comments/commentRss/60925.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yehongly/services/trackbacks/60925.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: http://blog.csdn.net/masterlee/archive/2004/11/09/174129.aspxSTL vector 容器介绍A Presentation of the STL Vector Container (By Nitron)翻译 masterlee介绍std::vector，并且讨论它在STL中的算法和条件函数remove_if()。&nbs...&nbsp;&nbsp;<a href='http://www.cppblog.com/yehongly/archive/2008/09/04/60925.html'>阅读全文</a><img src ="http://www.cppblog.com/yehongly/aggbug/60925.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yehongly/" target="_blank">茶</a> 2008-09-04 17:06 <a href="http://www.cppblog.com/yehongly/archive/2008/09/04/60925.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>typedef</title><link>http://www.cppblog.com/yehongly/archive/2007/12/25/39547.html</link><dc:creator>茶</dc:creator><author>茶</author><pubDate>Tue, 25 Dec 2007 01:33:00 GMT</pubDate><guid>http://www.cppblog.com/yehongly/archive/2007/12/25/39547.html</guid><wfw:comment>http://www.cppblog.com/yehongly/comments/39547.html</wfw:comment><comments>http://www.cppblog.com/yehongly/archive/2007/12/25/39547.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/yehongly/comments/commentRss/39547.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yehongly/services/trackbacks/39547.html</trackback:ping><description><![CDATA[<div class="box2"><span class="Tit"></span>&nbsp;</div>
<table class="htb wr" width="100%" border="0" cellpadding="0" cellspacing="0">
    <tbody>
        <tr>
            <td>
            <div class="box2 p14">typedef用法小结- -<br>这两天在看程序的时候,发现很多地方都用到typedef,在结构体定义,还有一些数组等地方都大量的用到.但是有些地方还不是很清楚,今天下午,就想好好研究一下.上网搜了一下,有不少资料.归纳一下:<br>来源一:Using typedef to Curb Miscreant Code<br>Typedef 声明有助于创建平台无关类型，甚至能隐藏复杂和难以理解的语法。不管怎样，使用 typedef 能为代码带来意想不到的好处，通过本文你可以学习用 typedef 避免缺欠，从而使代码更健壮。<br>typedef 声明，简称 typedef，为现有类型创建一个新的名字。比如人们常常使用 typedef 来编写更美观和可读的代码。所谓美观，意指 typedef 能隐藏笨拙的语法构造以及平台相关的数据类型，从而增强可移植性和以及未来的可维护性。本文下面将竭尽全力来揭示 typedef 强大功能以及如何避免一些常见的陷阱。<br>如何创建平台无关的数据类型，隐藏笨拙且难以理解的语法?<br>使用 typedefs 为现有类型创建同义字。<br>定义易于记忆的类型名<br>　　typedef 使用最多的地方是创建易于记忆的类型名，用它来归档程序员的意图。类型出现在所声明的变量名字中，位于 ''typedef'' 关键字右边。例如：<br>typedef int size;<br>　　此声明定义了一个 int 的同义字，名字为 size。注意 typedef 并不创建新的类型。它仅仅为现有类型添加一个同义字。你可以在任何需要 int 的上下文中使用 size：<br>void measure(size * psz);<br>size array[4];<br>size len = file.getlength();<br>std::vector vs;<br>　　typedef 还可以掩饰符合类型，如指针和数组。例如，你不用象下面这样重复定义有 81 个字符元素的数组：<br>char line[81];<br>char text[81];<br>定义一个 typedef，每当要用到相同类型和大小的数组时，可以这样：<br>typedef char Line[81];<br>Line text, secondline;<br>getline(text);<br>同样，可以象下面这样隐藏指针语法：<br>typedef char * pstr;<br>int mystrcmp(pstr, pstr);<br>　　这里将带我们到达第一个 typedef 陷阱。标准函数 strcmp()有两个&#8216;const char *'类型的参数。因此，它可能会误导人们象下面这样声明 mystrcmp()：<br>int mystrcmp(const pstr, const pstr);<br>　　这是错误的，按照顺序，&#8216;const pstr'被解释为&#8216;char * const'（一个指向 char 的常量指针），而不是&#8216;const char *'（指向常量 char 的指针）。这个问题很容易解决：<br>typedef const char * cpstr;<br>int mystrcmp(cpstr, cpstr); // 现在是正确的<br>记住：不管什么时候，只要为指针声明 typedef，那么都要在最终的 typedef 名称中加一个 const，以使得该指针本身是常量，而不是对象。<br>代码简化<br>　　上面讨论的 typedef 行为有点像 #define 宏，用其实际类型替代同义字。不同点是 typedef 在编译时被解释，因此让编译器来应付超越预处理器能力的文本替换。例如：<br>typedef int (*PF) (const char *, const char *);<br>　　这个声明引入了 PF 类型作为函数指针的同义字，该函数有两个 const char * 类型的参数以及一个 int 类型的返回值。如果要使用下列形式的函数声明，那么上述这个 typedef 是不可或缺的：<br>PF Register(PF pf);<br>　　Register() 的参数是一个 PF 类型的回调函数，返回某个函数的地址，其署名与先前注册的名字相同。做一次深呼吸。下面我展示一下如果不用 typedef，我们是如何实现这个声明的：<br>int (*Register (int (*pf)(const char *, const char *)))<br>(const char *, const char *);<br>　　很少有程序员理解它是什么意思，更不用说这种费解的代码所带来的出错风险了。显然，这里使用 typedef 不是一种特权，而是一种必需。持怀疑态度的人可能会问："OK，有人还会写这样的代码吗？"，快速浏览一下揭示 signal()函数的头文件 ，一个有同样接口的函数。<br>typedef 和存储类关键字（storage class specifier）<br>　　这种说法是不是有点令人惊讶，typedef 就像 auto，extern，mutable，static，和 register 一样，是一个存储类关键字。这并是说 typedef 会真正影响对象的存储特性；它只是说在语句构成上，typedef 声明看起来象 static，extern 等类型的变量声明。下面将带到第二个陷阱：<br>typedef register int FAST_COUNTER; // 错误<br>　　编译通不过。问题出在你不能在声明中有多个存储类关键字。因为符号 typedef 已经占据了存储类关键字的位置，在 typedef 声明中不能用 register（或任何其它存储类关键字）。<br>促进跨平台开发<br>　　typedef 有另外一个重要的用途，那就是定义机器无关的类型，例如，你可以定义一个叫 REAL 的浮点类型，在目标机器上它可以i获得最高的精度：<br>typedef long double REAL;<br>在不支持 long double 的机器上，该 typedef 看起来会是下面这样：<br>typedef double REAL;<br>并且，在连 double 都不支持的机器上，该 typedef 看起来会是这样：、<br>typedef float REAL;<br>　 　你不用对源代码做任何修改，便可以在每一种平台上编译这个使用 REAL 类型的应用程序。唯一要改的是 typedef 本身。在大多数情况下，甚至这个微小的变动完全都可以通过奇妙的条件编译来自动实现。不是吗? 标准库广泛地使用 typedef 来创建这样的平台无关类型：size_t，ptrdiff 和 fpos_t 就是其中的例子。此外，象 std::string 和 std::ofstream 这样的 typedef 还隐藏了长长的，难以理解的模板特化语法，例如：basic_string，allocator&gt; 和 basic_ofstream&gt;。<br>作者简介<br>　　Danny Kalev 是一名通过认证的系统分析师，专攻 C++ 和形式语言理论的软件工程师。1997 年到 2000 年期间，他是 C++ 标准委员会成员。最近他以优异成绩完成了他在普通语言学研究方面的硕士论文。业余时间他喜欢听古典音乐，阅读维多利亚时期的文学作品，研究 Hittite、Basque 和 Irish Gaelic 这样的自然语言。其它兴趣包括考古和地理。Danny 时常到一些 C++ 论坛并定期为不同的 C++ 网站和杂志撰写文章。他还在教育机构讲授程序设计语言和应用语言课程。<br>来源二：(<a href="http://www.ccfans.net/bbs/dispbbs.asp?boardid=30&amp;" target="_blank"><u><font color="#0000ff">http://www.ccfans.net/bbs/dispbbs.asp?boardid=30&amp;</font></u></a>;id=4455)<br>C语言中typedef用法<br>1. 基本解释<br>　　typedef为C语言的关键字，作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型（int,char等）和自定义的数据类型（struct等）。<br>　　在编程中使用typedef目的一般有两个，一个是给变量一个易记且意义明确的新名字，另一个是简化一些比较复杂的类型声明。<br>　　至于typedef有什么微妙之处，请你接着看下面对几个问题的具体阐述。<br>　2. typedef &amp; 结构的问题<br>　　当用下面的代码定义一个结构时，编译器报了一个错误，为什么呢？莫非C语言不允许在结构中包含指向它自己的指针吗？请你先猜想一下，然后看下文说明：<br>typedef struct tagNode<br>{<br>　char *pItem;<br>　pNode pNext;<br>} *pNode;<br>　　答案与分析：<br>　　1、typedef的最简单使用<br>typedef long byte_4;<br>　　给已知数据类型long起个新名字，叫byte_4。<br>　　2、 typedef与结构结合使用<br>typedef struct tagMyStruct<br>{<br>　int iNum;<br>　long lLength;<br>} MyStruct;<br>　　这语句实际上完成两个操作：<br>　　1) 定义一个新的结构类型<br>struct tagMyStruct<br>{<br>　int iNum;<br>　long lLength;<br>};<br>　　分析：tagMyStruct称为&#8220;tag&#8221;，即&#8220;标签&#8221;，实际上是一个临时名字，struct 关键字和tagMyStruct一起，构成了这个结构类型，不论是否有typedef，这个结构都存在。<br>　　我们可以用struct tagMyStruct varName来定义变量，但要注意，使用tagMyStruct varName来定义变量是不对的，因为struct 和tagMyStruct合在一起才能表示一个结构类型。<br>　　2) typedef为这个新的结构起了一个名字，叫MyStruct。<br>typedef struct tagMyStruct MyStruct;<br>　　因此，MyStruct实际上相当于struct tagMyStruct，我们可以使用MyStruct varName来定义变量。<br>　　答案与分析<br>　　C语言当然允许在结构中包含指向它自己的指针，我们可以在建立链表等数据结构的实现上看到无数这样的例子，上述代码的根本问题在于typedef的应用。<br>　　根据我们上面的阐述可以知道：新结构建立的过程中遇到了pNext域的声明，类型是pNode，要知道pNode表示的是类型的新名字，那么在类型本身还没有建立完成的时候，这个类型的新名字也还不存在，也就是说这个时候编译器根本不认识pNode。<br>　　解决这个问题的方法有多种：<br>　　1)、<br>typedef struct tagNode<br>{<br>　char *pItem;<br>　struct tagNode *pNext;<br>} *pNode;<br>　　2)、<br>typedef struct tagNode *pNode;<br>struct tagNode<br>{<br>　char *pItem;<br>　pNode pNext;<br>};<br>　　注意：在这个例子中，你用typedef给一个还未完全声明的类型起新名字。C语言编译器支持这种做法。<br>　　3)、规范做法：<br>struct tagNode<br>{<br>　char *pItem;<br>　struct tagNode *pNext;<br>};<br>typedef struct tagNode *pNode;<br>　3. typedef &amp; #define的问题<br>　　有下面两种定义pStr数据类型的方法，两者有什么不同？哪一种更好一点？<br>typedef char *pStr;<br>#define pStr char *;<br>　　答案与分析：<br>　　通常讲，typedef要比#define要好，特别是在有指针的场合。请看例子：<br>typedef char *pStr1;<br>#define pStr2 char *;<br>pStr1 s1, s2;<br>pStr2 s3, s4;<br>　　在上述的变量定义中，s1、s2、s3都被定义为char *，而s4则定义成了char，不是我们所预期的指针变量，根本原因就在于#define只是简单的字符串替换而typedef则是为一个类型起新名字。<br>　　#define用法例子：<br>#define f(x) x*x<br>main( )<br>{<br>　int a=6，b=2，c；<br>　c=f(a) / f(b)；<br>　printf("%d \\n"，c)；<br>}<br>　　以下程序的输出结果是: 36。<br>　　因为如此原因，在许多C语言编程规范中提到使用#define定义时，如果定义中包含表达式，必须使用括号，则上述定义应该如下定义才对：<br>#define f(x) (x*x)<br>　　当然，如果你使用typedef就没有这样的问题。<br>　　4. typedef &amp; #define的另一例<br>　　下面的代码中编译器会报一个错误，你知道是哪个语句错了吗？<br>typedef char * pStr;<br>char string[4] = "abc";<br>const char *p1 = string;<br>const pStr p2 = string;<br>p1++;<br>p2++;<br>　　答案与分析：<br>　　是p2++出错了。这个问题再一次提醒我们：typedef和#define不同，它不是简单的文本替换。上述代码中const pStr p2并不等于const char * p2。const pStr p2和const long x本质上没有区别，都是对变量进行只读限制，只不过此处变量p2的数据类型是我们自己定义的而不是系统固有类型而已。因此，const pStr p2的含义是：限定数据类型为char *的变量p2为只读，因此p2++错误。<br>　　#define与typedef引申谈<br>　　1) #define宏定义有一个特别的长处：可以使用 #ifdef ,#ifndef等来进行逻辑判断，还可以使用#undef来取消定义。<br>　　2) typedef也有一个特别的长处：它符合范围规则，使用typedef定义的变量类型其作用范围限制在所定义的函数或者文件内（取决于此变量定义的位置），而宏定义则没有这种特性。<br>　　5. typedef &amp; 复杂的变量声明<br>　　在编程实践中，尤其是看别人代码的时候，常常会遇到比较复杂的变量声明,使用typedef作简化自有其价值，比如：<br>　　下面是三个变量的声明，我想使用typdef分别给它们定义一个别名，请问该如何做？<br>&gt;1：int *(*a[5])(int, char*);<br>&gt;2：void (*b[10]) (void (*)());<br>&gt;3. doube(*)() (*pa)[9];<br>　　答案与分析：<br>　　对复杂变量建立一个类型别名的方法很简单，你只要在传统的变量声明表达式里用类型名替代变量名，然后把关键字typedef加在该语句的开头就行了。<br>&gt;1：int *(*a[5])(int, char*);<br>//pFun是我们建的一个类型别名<br>typedef int *(*pFun)(int, char*);<br>//使用定义的新类型来声明对象，等价于int* (*a[5])(int, char*);<br>pFun a[5];<br>&gt;2：void (*b[10]) (void (*)());<br>//首先为上面表达式蓝色部分声明一个新类型<br>typedef void (*pFunParam)();<br>//整体声明一个新类型<br>typedef void (*pFun)(pFunParam);<br>//使用定义的新类型来声明对象，等价于void (*b[10]) (void (*)());<br>pFun b[10];<br>&gt;3. doube(*)() (*pa)[9];<br>//首先为上面表达式蓝色部分声明一个新类型<br>typedef double(*pFun)();<br>//整体声明一个新类型<br>typedef pFun (*pFunParam)[9];<br>//使用定义的新类型来声明对象，等价于doube(*)() (*pa)[9];<br>pFunParam pa;</div>
            </td>
        </tr>
    </tbody>
</table>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><strong><span style="font-size: 9pt; color: blue; font-family: 'courier new';" lang="EN-US">#define</span></strong><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"> S(s) printf("%s\n", <strong><span style="color: blue;">#</span></strong>s); s<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><strong><span style="font-size: 9pt; color: blue; font-family: 'courier new';" lang="EN-US">typedef</span></strong><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"> <strong><span style="color: blue;">struct</span></strong> _TS1{<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span><strong><span style="color: blue;">int</span></strong> x, y;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US">} <strong>TS1</strong>, *<strong>PTS1</strong>, ***<strong>PPPTS1</strong>;<span>&nbsp; </span><em><span style="color: #993300;">// TS1</span></em></span><em><span style="font-size: 9pt; color: #993300; font-family: 宋体;">是结构体的名称，</span></em><em><span style="font-size: 9pt; color: #993300; font-family: 'courier new';" lang="EN-US">PTS1</span></em><em><span style="font-size: 9pt; color: #993300; font-family: 宋体;">是结构体指针的名称</span></em><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><em><span style="font-size: 9pt; color: #993300; font-family: 'courier new';" lang="EN-US">// </span></em><em><span style="font-size: 9pt; color: #993300; font-family: 宋体;">也就是将结构体</span></em><em><span style="font-size: 9pt; color: #993300; font-family: 'courier new';" lang="EN-US">struct _TS1 </span></em><em><span style="font-size: 9pt; color: #993300; font-family: 宋体;">命名为</span></em><em><span style="font-size: 9pt; color: #993300; font-family: 'courier new';" lang="EN-US">TS1, </span></em><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><em><span style="font-size: 9pt; color: #993300; font-family: 'courier new';" lang="EN-US">// </span></em><em><span style="font-size: 9pt; color: #993300; font-family: 宋体;">将</span></em><em><span style="font-size: 9pt; color: #993300; font-family: 'courier new';" lang="EN-US">struct _TS1 * </span></em><em><span style="font-size: 9pt; color: #993300; font-family: 宋体;">命名为</span></em><em><span style="font-size: 9pt; color: #993300; font-family: 'courier new';" lang="EN-US"> PTS1</span></em><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><em><span style="font-size: 9pt; color: #993300; font-family: 'courier new';" lang="EN-US">// </span></em><em><span style="font-size: 9pt; color: #993300; font-family: 宋体;">将</span></em><em><span style="font-size: 9pt; color: #993300; font-family: 'courier new';" lang="EN-US">struct _TS1 *** </span></em><em><span style="font-size: 9pt; color: #993300; font-family: 宋体;">命名为</span></em><em><span style="font-size: 9pt; color: #993300; font-family: 'courier new';" lang="EN-US"> PPPTS1</span></em><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><strong><span style="font-size: 9pt; color: blue; font-family: 'courier new';" lang="EN-US">typedef</span></strong><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"> <strong><span style="color: blue;">struct</span></strong> { <em><span style="color: #993300;">// struct</span></em></span><em><span style="font-size: 9pt; color: #993300; font-family: 宋体;">后面的结构体说明也可以去掉</span></em><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span><strong><span style="color: blue;">int</span></strong> x, y;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US">} <strong>TS2</strong>, *<strong>PTS2</strong>; <o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><strong><span style="font-size: 9pt; color: blue; font-family: 'courier new';" lang="EN-US">typedef</span></strong><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"> <strong>PTS1</strong> *<strong>PPTS1</strong>; <em><span style="color: #993300;">// </span></em></span><em><span style="font-size: 9pt; color: #993300; font-family: 宋体;">定义</span></em><em><span style="font-size: 9pt; color: #993300; font-family: 'courier new';" lang="EN-US">PPTS1</span></em><em><span style="font-size: 9pt; color: #993300; font-family: 宋体;">是指向</span></em><em><span style="font-size: 9pt; color: #993300; font-family: 'courier new';" lang="EN-US">PTS1</span></em><em><span style="font-size: 9pt; color: #993300; font-family: 宋体;">的指针</span></em><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><strong><span style="font-size: 9pt; color: blue; font-family: 'courier new';" lang="EN-US">typedef</span></strong><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"> <strong><span style="color: blue;">struct</span></strong> _<strong>TTS1</strong>{<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span><strong><span style="color: blue;">typedef</span></strong> <strong><span style="color: blue;">struct</span></strong> <strong>ITTS1</strong> {<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><strong><span style="color: blue;">int</span></strong> x, y;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span>} <strong>iner</strong>;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span><strong>iner</strong> i;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span><strong><span style="color: blue;">int</span></strong> x, y;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US">} TTS1;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><em><span style="font-size: 9pt; color: #993300; font-family: 'courier new';" lang="EN-US">//</span></em><em><span style="font-size: 9pt; color: #993300; font-family: 宋体;">结构体内部的结构体也一样可以定义</span></em><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><strong><span style="font-size: 9pt; color: blue; font-family: 'courier new';" lang="EN-US">typedef</span></strong><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"> <strong>TTS1</strong>::<strong>ITTS1</strong> <strong>ITS1</strong>;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><strong><span style="font-size: 9pt; color: blue; font-family: 'courier new';" lang="EN-US">void</span></strong><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"> test_struct()<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US">{<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span><em><span style="color: #993300;">// </span></em></span><em><span style="font-size: 9pt; color: #993300; font-family: 宋体;">基本结构体重定义的使用</span></em><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span><strong>TS1</strong> ts1 = {100, 200};<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span><strong>PTS1</strong> pts1 = &amp;ts1; <em><span style="color: #993300;">// </span></em></span><em><span style="font-size: 9pt; color: #993300; font-family: 宋体;">完全等价于</span></em><em><span style="font-size: 9pt; color: #993300; font-family: 'courier new';" lang="EN-US">TS1* pts1 = &amp;ts1;</span></em><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span><strong>PPTS1</strong> ppts1 = &amp;pts1; <em><span style="color: #993300;">// </span></em></span><em><span style="font-size: 9pt; color: #993300; font-family: 宋体;">完全等价于</span></em><em><span style="font-size: 9pt; color: #993300; font-family: 'courier new';" lang="EN-US">TS1** ppts1 = &amp;pts1;</span></em><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span><strong>PPPTS1</strong> pppts1 = &amp;ppts1; <em><span style="color: #993300;">// </span></em></span><em><span style="font-size: 9pt; color: #993300; font-family: 宋体;">完全等价于</span></em><em><span style="font-size: 9pt; color: #993300; font-family: 'courier new';" lang="EN-US"> TS1*** pppts1 = &amp;ppts1;</span></em><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span><strong>TS2</strong> ts2 = {99, 88};<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span><strong>PTS2</strong> pts2 = &amp;ts2;<span>&nbsp;&nbsp; </span><em><span style="color: #993300;">// </span></em></span><em><span style="font-size: 9pt; color: #993300; font-family: 宋体;">完全等价于</span></em><em><span style="font-size: 9pt; color: #993300; font-family: 'courier new';" lang="EN-US"> TS2* pts2 = &amp;ts2;</span></em><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span><strong>TTS1</strong> itts1 = {{110, 220}, 10, 20}; <o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span><strong>Its1</strong>* rits1 = &amp;itts1.i;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span><strong>ITS1</strong>* <strong>&amp;</strong>its1 = rits1; <em><span style="color: #993300;">// </span></em></span><em><span style="font-size: 9pt; color: #993300; font-family: 宋体;">等价于</span></em><em><span style="font-size: 9pt; color: #993300; font-family: 'courier new';" lang="EN-US"> TTS1::ITTS1 *its1 = &amp;(itts1.i);</span></em><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span>printf(<span style="color: #ff6600;">"ts1\t = (%d, %d)\n*pts1\t = (%d, %d)\n"</span><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp; </span><span style="color: #ff6600;">"**ppts1\t = (%d, %d)\n***pppts1= (%d, %d)\n\n"</span>,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp; </span>ts1.x, ts1.y, pts1-&gt;x, pts1-&gt;y,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp; </span>(**ppts1).x, (**ppts1).y, (***pppts1).x, (***pppts1).y);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span>printf(<span style="color: #ff6600;">"ts2\t = (%d, %d)\n*pts2\t = (%d, %d)\n\n"</span>,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ts2.x, ts2.y, pts2-&gt;x, pts2-&gt;y);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span>printf(<span style="color: #ff6600;">"itts1\t = [(%d, %d), %d, %d]\n*its1\t =<span>&nbsp; </span>(%d, %d)\n\n"</span>,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp; </span>itts1.i.x, itts1.i.y, itts1.x, itts1.y, its1-&gt;x, its1-&gt;y);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span>S(pts1-&gt;x = 119);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span>S(pts2-&gt;y = 911);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span>S(its1-&gt;x = 999);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span>printf(<span style="color: #ff6600;">"ts1\t = (%d, %d)\n*pts1\t = (%d, %d)\n"</span><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp; </span><span style="color: #ff6600;">"**ppts1\t = (%d, %d)\n***pppts1= (%d, %d)\n\n"</span>,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp; </span>ts1.x, ts1.y, pts1-&gt;x, pts1-&gt;y,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp; </span>(**ppts1).x, (**ppts1).y, (***pppts1).x, (***pppts1).y);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span>printf(<span style="color: #ff6600;">"ts2\t = (%d, %d)\n*pts2\t = (%d, %d)\n\n"</span>,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ts2.x, ts2.y, pts2-&gt;x, pts2-&gt;y);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span>printf(<span style="color: #ff6600;">"itts1\t = [(%d, %d), %d, %d]\n*its1\t =<span>&nbsp; </span>(%d, %d)\n\n"</span>,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp; </span>itts1.i.x, itts1.i.y, itts1.x, itts1.y, its1-&gt;x, its1-&gt;y);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span>S((*ppts1)-&gt;y = -9999);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span>printf(<span style="color: #ff6600;">"ts1\t = (%d, %d)\n**ppts1\t = (%d, %d)\n\n"</span>,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>ts1.x, ts1.y, (*ppts1)-&gt;x, (*ppts1)-&gt;y);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US">&nbsp;<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span>S((**pppts1)-&gt;x = -12345);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span>S((***pppts1).y = -67890);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp; </span>printf(<span style="color: #ff6600;">"ts1\t = (%d, %d)\n*pts1\t = (%d, %d)\n"</span><o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp; </span><span style="color: #ff6600;">"**ppts1\t = (%d, %d)\n***pppts1= (%d, %d)\n\n"</span>,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp; </span>ts1.x, ts1.y, pts1-&gt;x, pts1-&gt;y,<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US"><span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><span>&nbsp;&nbsp;&nbsp; </span>(**ppts1).x, (**ppts1).y, (***pppts1).x, (***pppts1).y);<o:p></o:p></span></p>
<p class="MsoNormal" style="margin: 0cm 0cm 0pt;"><span style="font-size: 9pt; font-family: 'courier new';" lang="EN-US">}<o:p></o:p></span></p><img src ="http://www.cppblog.com/yehongly/aggbug/39547.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yehongly/" target="_blank">茶</a> 2007-12-25 09:33 <a href="http://www.cppblog.com/yehongly/archive/2007/12/25/39547.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>STL vector的使用</title><link>http://www.cppblog.com/yehongly/archive/2007/12/11/38232.html</link><dc:creator>茶</dc:creator><author>茶</author><pubDate>Tue, 11 Dec 2007 06:26:00 GMT</pubDate><guid>http://www.cppblog.com/yehongly/archive/2007/12/11/38232.html</guid><wfw:comment>http://www.cppblog.com/yehongly/comments/38232.html</wfw:comment><comments>http://www.cppblog.com/yehongly/archive/2007/12/11/38232.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cppblog.com/yehongly/comments/commentRss/38232.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yehongly/services/trackbacks/38232.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;<a href="http://www.cppreference.com/cppvector/index.html">http://www.cppreference.com/cppvector/index.html</a>
<div class="name-format">assign </div>
<div class="syntax-name-format">Syntax: </div>
<pre class="syntax-box">  #include &lt;vector&gt;
void assign( <strong>size_type</strong> num, const <a href="http://www.cppreference.com/containers.html">TYPE</a>&amp; val );
void assign( <a href="http://www.cppreference.com/iterators.html">input_iterator</a> start, <a href="http://www.cppreference.com/iterators.html">input_iterator</a> end );
</pre>
<p>The assign() function either gives the current vector the values from <em>start</em> to <em>end</em>, or gives it <em>num</em> copies of <em>val</em>.</p>
<p>This function will destroy the previous contents of the vector.</p>
<p>For example, the following code uses assign() to put 10 copies of the integer 42 into a vector:</p>
<pre class="prettyprint"><span class="pln">vector</span><span class="pun">&lt;</span><span class="kwd">int</span><span class="pun">&gt;</span><span class="pln"> v</span><span class="pun">;</span><span class="pln"><br>&nbsp;v</span><span class="pun">.</span><span class="pln">assign</span><span class="pun">(</span><span class="pln"> </span><span class="lit">10</span><span class="pun">,</span><span class="pln"> </span><span class="lit">42</span><span class="pln"> </span><span class="pun">);</span><span class="pln"><br>&nbsp;</span><span class="kwd">for</span><span class="pun">(</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> v</span><span class="pun">.</span><span class="pln">size</span><span class="pun">();</span><span class="pln"> i</span><span class="pun">++</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br>&nbsp; &nbsp;cout </span><span class="pun">&lt;&lt;</span><span class="pln"> v</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln"> </span><span class="pun">&lt;&lt;</span><span class="pln"> </span><span class="str">" "</span><span class="pun">;</span><span class="pln"><br>&nbsp;</span><span class="pun">}</span><span class="pln"><br>&nbsp;cout </span><span class="pun">&lt;&lt;</span><span class="pln"> endl</span><span class="pun">;</span><span class="pln"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></pre>
<p>The above code displays the following output:</p>
<pre class="prettyprint"><span class="pln"></span><span class="lit">42</span><span class="pln"> </span><span class="lit">42</span><span class="pln"> </span><span class="lit">42</span><span class="pln"> </span><span class="lit">42</span><span class="pln"> </span><span class="lit">42</span><span class="pln"> </span><span class="lit">42</span><span class="pln"> </span><span class="lit">42</span><span class="pln"> </span><span class="lit">42</span><span class="pln"> </span><span class="lit">42</span><span class="pln"> </span><span class="lit">42</span><span class="pln"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></pre>
<p>The next example shows how assign() can be used to copy one vector to another:</p>
<pre class="prettyprint"><span class="pln">vector</span><span class="pun">&lt;</span><span class="kwd">int</span><span class="pun">&gt;</span><span class="pln"> v1</span><span class="pun">;</span><span class="pln"><br>&nbsp;</span><span class="kwd">for</span><span class="pun">(</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="lit">10</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br>&nbsp; &nbsp;v1</span><span class="pun">.</span><span class="pln">push_back</span><span class="pun">(</span><span class="pln"> i </span><span class="pun">);</span><span class="pln"><br>&nbsp;</span><span class="pun">}</span><span class="pln"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br><br>&nbsp;vector</span><span class="pun">&lt;</span><span class="kwd">int</span><span class="pun">&gt;</span><span class="pln"> v2</span><span class="pun">;</span><span class="pln"><br>&nbsp;v2</span><span class="pun">.</span><span class="pln">assign</span><span class="pun">(</span><span class="pln"> v1</span><span class="pun">.</span><span class="kwd">begin</span><span class="pun">(),</span><span class="pln"> v1</span><span class="pun">.</span><span class="kwd">end</span><span class="pun">()</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br><br>&nbsp;</span><span class="kwd">for</span><span class="pun">(</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> v2</span><span class="pun">.</span><span class="pln">size</span><span class="pun">();</span><span class="pln"> i</span><span class="pun">++</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br>&nbsp; &nbsp;cout </span><span class="pun">&lt;&lt;</span><span class="pln"> v2</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln"> </span><span class="pun">&lt;&lt;</span><span class="pln"> </span><span class="str">" "</span><span class="pun">;</span><span class="pln"><br>&nbsp;</span><span class="pun">}</span><span class="pln"><br>&nbsp;cout </span><span class="pun">&lt;&lt;</span><span class="pln"> endl</span><span class="pun">;</span><span class="pln"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></pre>
<p>When run, the above code displays the following output:</p>
<pre class="prettyprint"><span class="pln"></span><span class="lit">0</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="lit">3</span><span class="pln"> </span><span class="lit">4</span><span class="pln"> </span><span class="lit">5</span><span class="pln"> </span><span class="lit">6</span><span class="pln"> </span><span class="lit">7</span><span class="pln"> </span><span class="lit">8</span><span class="pln"> </span><span class="lit">9</span><span class="pln"> &nbsp; &nbsp; <br><br><br><br>
<div class="name-format">Vector constructors </div>
<div class="syntax-name-format">Syntax: </div>
<pre class="syntax-box">  #include &lt;vector&gt;
vector();
vector( const vector&amp; c );
vector( <strong>size_type</strong> num, const <a href="http://www.cppreference.com/containers.html">TYPE</a>&amp; val = <a href="http://www.cppreference.com/containers.html">TYPE</a>() );
vector( <a href="http://www.cppreference.com/iterators.html">input_iterator</a> start, <a href="http://www.cppreference.com/iterators.html">input_iterator</a> end );
~vector();
</pre>
<p>The default vector constructor takes no arguments, creates a new instance of that vector.</p>
<p>The second constructor is a default copy constructor that can be used to create a new vector that is a copy of the given vector <em>c</em>.</p>
<p>The third constructor creates a vector with space for <em>num</em> objects. If <em>val</em> is specified, each of those objects will be given that value. For example, the following code creates a vector consisting of five copies of the integer 42:</p>
<pre class="prettyprint"><span class="pln">vector</span><span class="pun">&lt;</span><span class="kwd">int</span><span class="pun">&gt;</span><span class="pln"> v1</span><span class="pun">(</span><span class="pln"> </span><span class="lit">5</span><span class="pun">,</span><span class="pln"> </span><span class="lit">42</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> &nbsp; &nbsp; &nbsp; &nbsp; </span></pre>
<p>The last constructor creates a vector that is initialized to contain the elements between <em>start</em> and <em>end</em>. For example:</p>
<pre class="prettyprint"><span class="pln"></span><span class="com">// create a vector of random integers</span><span class="pln"><br>&nbsp;cout </span><span class="pun">&lt;&lt;</span><span class="pln"> </span><span class="str">"original vector: "</span><span class="pun">;</span><span class="pln"><br>&nbsp;vector</span><span class="pun">&lt;</span><span class="kwd">int</span><span class="pun">&gt;</span><span class="pln"> v</span><span class="pun">;</span><span class="pln"><br>&nbsp;</span><span class="kwd">for</span><span class="pun">(</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> </span><span class="lit">10</span><span class="pun">;</span><span class="pln"> i</span><span class="pun">++</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br>&nbsp; &nbsp;</span><span class="kwd">int</span><span class="pln"> num </span><span class="pun">=</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">int</span><span class="pun">)</span><span class="pln"> rand</span><span class="pun">()</span><span class="pln"> </span><span class="pun">%</span><span class="pln"> </span><span class="lit">10</span><span class="pun">;</span><span class="pln"><br>&nbsp; &nbsp;cout </span><span class="pun">&lt;&lt;</span><span class="pln"> num </span><span class="pun">&lt;&lt;</span><span class="pln"> </span><span class="str">" "</span><span class="pun">;</span><span class="pln"><br>&nbsp; &nbsp;v</span><span class="pun">.</span><span class="pln">push_back</span><span class="pun">(</span><span class="pln"> num </span><span class="pun">);</span><span class="pln"><br>&nbsp;</span><span class="pun">}</span><span class="pln"><br>&nbsp;cout </span><span class="pun">&lt;&lt;</span><span class="pln"> endl</span><span class="pun">;</span><span class="pln"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br><br>&nbsp;</span><span class="com">// find the first element of v that is even</span><span class="pln"><br>&nbsp;vector</span><span class="pun">&lt;</span><span class="kwd">int</span><span class="pun">&gt;::</span><span class="pln">iterator iter1 </span><span class="pun">=</span><span class="pln"> v</span><span class="pun">.</span><span class="kwd">begin</span><span class="pun">();</span><span class="pln"><br>&nbsp;</span><span class="kwd">while</span><span class="pun">(</span><span class="pln"> iter1 </span><span class="pun">!=</span><span class="pln"> v</span><span class="pun">.</span><span class="kwd">end</span><span class="pun">()</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">*</span><span class="pln">iter1 </span><span class="pun">%</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br>&nbsp; &nbsp;iter1</span><span class="pun">++;</span><span class="pln"><br>&nbsp;</span><span class="pun">}</span><span class="pln"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br><br>&nbsp;</span><span class="com">// find the last element of v that is even</span><span class="pln"><br>&nbsp;vector</span><span class="pun">&lt;</span><span class="kwd">int</span><span class="pun">&gt;::</span><span class="pln">iterator iter2 </span><span class="pun">=</span><span class="pln"> v</span><span class="pun">.</span><span class="kwd">end</span><span class="pun">();</span><span class="pln"><br>&nbsp;</span><span class="kwd">do</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br>&nbsp; &nbsp;iter2</span><span class="pun">--;</span><span class="pln"><br>&nbsp;</span><span class="pun">}</span><span class="pln"> </span><span class="kwd">while</span><span class="pun">(</span><span class="pln"> iter2 </span><span class="pun">!=</span><span class="pln"> v</span><span class="pun">.</span><span class="kwd">begin</span><span class="pun">()</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> </span><span class="pun">*</span><span class="pln">iter2 </span><span class="pun">%</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="pun">!=</span><span class="pln"> </span><span class="lit">0</span><span class="pln"> </span><span class="pun">);</span><span class="pln"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<br><br>&nbsp;</span><span class="com">// only proceed if we find both numbers</span><span class="pln"><br>&nbsp;</span><span class="kwd">if</span><span class="pun">(</span><span class="pln"> iter1 </span><span class="pun">!=</span><span class="pln"> v</span><span class="pun">.</span><span class="kwd">end</span><span class="pun">()</span><span class="pln"> </span><span class="pun">&amp;&amp;</span><span class="pln"> iter2 </span><span class="pun">!=</span><span class="pln"> v</span><span class="pun">.</span><span class="kwd">begin</span><span class="pun">()</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br>&nbsp; &nbsp;cout </span><span class="pun">&lt;&lt;</span><span class="pln"> </span><span class="str">"first even number: "</span><span class="pln"> </span><span class="pun">&lt;&lt;</span><span class="pln"> </span><span class="pun">*</span><span class="pln">iter1 </span><span class="pun">&lt;&lt;</span><span class="pln"> </span><span class="str">", last even number: "</span><span class="pln"> </span><span class="pun">&lt;&lt;</span><span class="pln"> </span><span class="pun">*</span><span class="pln">iter2 </span><span class="pun">&lt;&lt;</span><span class="pln"> endl</span><span class="pun">;</span><span class="pln"> &nbsp; &nbsp; &nbsp; &nbsp; <br><br>&nbsp; &nbsp;cout </span><span class="pun">&lt;&lt;</span><span class="pln"> </span><span class="str">"new vector: "</span><span class="pun">;</span><span class="pln"><br>&nbsp; &nbsp;vector</span><span class="pun">&lt;</span><span class="kwd">int</span><span class="pun">&gt;</span><span class="pln"> v2</span><span class="pun">(</span><span class="pln"> iter1</span><span class="pun">,</span><span class="pln"> iter2 </span><span class="pun">);</span><span class="pln"><br>&nbsp; &nbsp;</span><span class="kwd">for</span><span class="pun">(</span><span class="pln"> </span><span class="kwd">int</span><span class="pln"> i </span><span class="pun">=</span><span class="pln"> </span><span class="lit">0</span><span class="pun">;</span><span class="pln"> i </span><span class="pun">&lt;</span><span class="pln"> v2</span><span class="pun">.</span><span class="pln">size</span><span class="pun">();</span><span class="pln"> i</span><span class="pun">++</span><span class="pln"> </span><span class="pun">)</span><span class="pln"> </span><span class="pun">{</span><span class="pln"><br>&nbsp; &nbsp; &nbsp;cout </span><span class="pun">&lt;&lt;</span><span class="pln"> v2</span><span class="pun">[</span><span class="pln">i</span><span class="pun">]</span><span class="pln"> </span><span class="pun">&lt;&lt;</span><span class="pln"> </span><span class="str">" "</span><span class="pun">;</span><span class="pln"><br>&nbsp; &nbsp;</span><span class="pun">}</span><span class="pln"><br>&nbsp; &nbsp;cout </span><span class="pun">&lt;&lt;</span><span class="pln"> endl</span><span class="pun">;</span><span class="pln"><br>&nbsp;</span><span class="pun">}</span></pre>
<p>When run, this code displays the following output:</p>
<pre class="prettyprint"><span class="pln">original vector</span><span class="pun">:</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="lit">9</span><span class="pln"> </span><span class="lit">7</span><span class="pln"> </span><span class="lit">9</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="lit">7</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="lit">9</span><span class="pln"> </span><span class="lit">8</span><span class="pln"><br>&nbsp;first even number</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</span><span class="pun">,</span><span class="pln"> last even number</span><span class="pun">:</span><span class="pln"> </span><span class="lit">8</span><span class="pln"><br>&nbsp;</span><span class="kwd">new</span><span class="pln"> vector</span><span class="pun">:</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="lit">7</span><span class="pln"> </span><span class="lit">2</span><span class="pln"> </span><span class="lit">1</span><span class="pln"> </span><span class="lit">9</span><span class="pln"> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</span></pre>
<p>All of these constructors run in <a href="http://www.cppreference.com/complexity.html">linear time</a> except the first, which runs in <a href="http://www.cppreference.com/complexity.html">constant time</a>.</p>
<p>The default destructor is called when the vector should be destroyed.<br><br></p>
&nbsp;</span></pre><img src ="http://www.cppblog.com/yehongly/aggbug/38232.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yehongly/" target="_blank">茶</a> 2007-12-11 14:26 <a href="http://www.cppblog.com/yehongly/archive/2007/12/11/38232.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c++ STL 容器基础（一）</title><link>http://www.cppblog.com/yehongly/archive/2007/12/11/38224.html</link><dc:creator>茶</dc:creator><author>茶</author><pubDate>Tue, 11 Dec 2007 06:00:00 GMT</pubDate><guid>http://www.cppblog.com/yehongly/archive/2007/12/11/38224.html</guid><wfw:comment>http://www.cppblog.com/yehongly/comments/38224.html</wfw:comment><comments>http://www.cppblog.com/yehongly/archive/2007/12/11/38224.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/yehongly/comments/commentRss/38224.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/yehongly/services/trackbacks/38224.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/yehongly/archive/2007/12/11/38224.html'>阅读全文</a><img src ="http://www.cppblog.com/yehongly/aggbug/38224.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/yehongly/" target="_blank">茶</a> 2007-12-11 14:00 <a href="http://www.cppblog.com/yehongly/archive/2007/12/11/38224.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>