﻿<?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++博客-Program My Future</title><link>http://www.cppblog.com/Voider/</link><description>Get Involed</description><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 09:38:07 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 09:38:07 GMT</pubDate><ttl>60</ttl><item><title>lock the mouse and keyboard——windows</title><link>http://www.cppblog.com/Voider/archive/2010/09/07/126100.html</link><dc:creator>Voider</dc:creator><author>Voider</author><pubDate>Tue, 07 Sep 2010 09:37:00 GMT</pubDate><guid>http://www.cppblog.com/Voider/archive/2010/09/07/126100.html</guid><wfw:comment>http://www.cppblog.com/Voider/comments/126100.html</wfw:comment><comments>http://www.cppblog.com/Voider/archive/2010/09/07/126100.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Voider/comments/commentRss/126100.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Voider/services/trackbacks/126100.html</trackback:ping><description><![CDATA[ref:<br><a href="http://www.cplusplus.com/forum/windows/11380/">http://www.cplusplus.com/forum/windows/11380/</a>
<img src ="http://www.cppblog.com/Voider/aggbug/126100.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Voider/" target="_blank">Voider</a> 2010-09-07 17:37 <a href="http://www.cppblog.com/Voider/archive/2010/09/07/126100.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>lock the mouse and keyboard——Linux</title><link>http://www.cppblog.com/Voider/archive/2010/08/19/123935.html</link><dc:creator>Voider</dc:creator><author>Voider</author><pubDate>Thu, 19 Aug 2010 02:52:00 GMT</pubDate><guid>http://www.cppblog.com/Voider/archive/2010/08/19/123935.html</guid><wfw:comment>http://www.cppblog.com/Voider/comments/123935.html</wfw:comment><comments>http://www.cppblog.com/Voider/archive/2010/08/19/123935.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Voider/comments/commentRss/123935.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Voider/services/trackbacks/123935.html</trackback:ping><description><![CDATA[some&nbsp; material<br><br><a href="http://blog.chinaunix.net/u/4206/showart_721067.html">http://blog.chinaunix.net/u/4206/showart_721067.html</a><br><br>http://blog.csdn.net/wushihua/archive/2010/07/02/5709359.aspx<br><br>linux 下：<br>0. bash<br>1. 用户任意设置&#8220;工作时间&#8221;，&#8220;休息时间&#8221;。目前考虑使用命令行参数 done<br>2. 动态获取&#8220;设备号&#8221;，在不同的机子上用可不需修改 (no so urgent)<br>*3. 时间显示<br>改进：<br>1.1 如果休息起来五分钟（默认休息时间）才回来，只剩下不多的工作时间，才做一会儿又要中断。<br>最好是在锁定键鼠五分钟后，在用户回来电脑时才开始让工作时间计时。<br>考虑方案一：<br>等待用户输入后才（解除鼠标锁定）开始进入下一轮工作计时（done）<br>较高级的方案：<br>休息时间结束后，捕捉到键盘或者鼠标动作才开始下一轮工作计时。<br>1.2 工作时间离开电脑，进入休息时间计时。若一定时间键鼠都没反应。<br>(done, 获取键盘鼠标的空闲，若比休息时间还长，进入新一轮的工作)<br><br>2. kill sleep后，可能键盘永远锁住。 解决关闭该程序的善后工作。(done , use signal)<br>锁住鼠标，不锁住键盘，在锁住鼠标时，Ctrl-C，结束程序，但鼠标没有解锁。<br><br>备注：<br>1. 是否锁定键盘得明确，考虑是否对两需求推出不同方案。暂考虑只锁键盘<br><br><br>some note:<br>1. <br>操作/dev/input/event*文件，向它写入个input_event结构体就可以模拟按键的输入<br>哪个event文件可通过cat /proc/bus/input/devices 查看。<br>N: Name="AT Translated Set 2 keyboard"<br>H: Handlers=kbd event3 <br><br>N: Name="Logitech USB Optical Mouse"<br>H: Handlers=mouse1 event4<br>2.<br>Essentially keyboard and mouse idle time can be<br>gleaned (indirectly) from certain lines of the /proc/interrupts file. It<br>seems this file contains a counter for each device<br>http://software.itags.org/linux-unix/330299/<br><br>Sense mouse and keyboard inactivity final solution:<br>/*<br>This is a test example.<br>Ref: <br>http://coderrr.wordpress.com/2008/04/20/getting-idle-time-in-unix/<br><br>gcc -o idle idle_xscr2.c -lXss<br>*/<br>#include &lt;stdio.h&gt;<br>#include &lt;X11/extensions/scrnsaver.h&gt;<br>#include &lt;unistd.h&gt;<br>&nbsp;&nbsp;&nbsp; &nbsp;<br>int main() <br>{<br>&nbsp; &nbsp;&nbsp;&nbsp; XScreenSaverInfo *info = XScreenSaverAllocInfo();<br>&nbsp;&nbsp;&nbsp; Display *display = XOpenDisplay(0);<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; int i=1;<br>for(;i&lt;5; i++){<br>&nbsp;&nbsp;&nbsp; sleep(3);&nbsp;&nbsp;&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp; XScreenSaverQueryInfo(display, DefaultRootWindow(display), info);<br>&nbsp;&nbsp;&nbsp; printf("%ld ms\n", info-&gt;idle);<br>}<br>&nbsp;&nbsp;&nbsp; return 0;<br>}<br><br><br>编译：<br><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#118;&#111;&#105;&#100;&#101;&#64;&#102;&#105;&#116;&#58;&#126;&#47;&#98;&#97;&#115;&#104;&#36;">voide@fit:~/bash$</a> gcc lock.c -o lock -lXss<br>lock.c:24:38: error: X11/extensions/scrnsaver.h: No such file or directory<br>lock.c: In function &#8216;main&#8217;:<br>lock.c:41: error: &#8216;XScreenSaverInfo&#8217; undeclared (first use in this function)<br>lock.c:41: error: (Each undeclared identifier is reported only once<br>lock.c:41: error: for each function it appears in.)<br>lock.c:41: error: &#8216;info&#8217; undeclared (first use in this function)<br>lock.c:42: error: &#8216;Display&#8217; undeclared (first use in this function)<br>lock.c:42: error: &#8216;display&#8217; undeclared (first use in this function)<br><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#114;&#111;&#111;&#116;&#64;&#102;&#105;&#116;&#58;&#47;&#104;&#111;&#109;&#101;&#47;&#118;&#111;&#105;&#100;&#101;&#47;&#98;&#97;&#115;&#104;">root@fit:/home/voide/bash</a># apt-get install libxss-dev<br><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#114;&#111;&#111;&#116;&#64;&#102;&#105;&#116;&#58;&#47;&#104;&#111;&#109;&#101;&#47;&#118;&#111;&#105;&#100;&#101;&#47;&#98;&#97;&#115;&#104;">root@fit:/home/voide/bash</a># gcc lock.c -o lock -lXss<br><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#114;&#111;&#111;&#116;&#64;&#102;&#105;&#116;&#58;&#47;&#104;&#111;&#109;&#101;&#47;&#118;&#111;&#105;&#100;&#101;&#47;&#98;&#97;&#115;&#104;">root@fit:/home/voide/bash</a># ./lock&nbsp; 1800 300&nbsp;&nbsp;&nbsp;/* 1800s 300s*/<br>Use a short time for debug<br>sh: ./unlock.sh: Permission denied<br><a href="&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#114;&#111;&#111;&#116;&#64;&#102;&#105;&#116;&#58;&#47;&#104;&#111;&#109;&#101;&#47;&#118;&#111;&#105;&#100;&#101;&#47;&#98;&#97;&#115;&#104;">root@fit:/home/voide/bash</a># chmod +x *.sh<br><br>
<img src ="http://www.cppblog.com/Voider/aggbug/123935.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Voider/" target="_blank">Voider</a> 2010-08-19 10:52 <a href="http://www.cppblog.com/Voider/archive/2010/08/19/123935.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>STL note 01－－deque</title><link>http://www.cppblog.com/Voider/archive/2009/10/30/99826.html</link><dc:creator>Voider</dc:creator><author>Voider</author><pubDate>Fri, 30 Oct 2009 06:45:00 GMT</pubDate><guid>http://www.cppblog.com/Voider/archive/2009/10/30/99826.html</guid><wfw:comment>http://www.cppblog.com/Voider/comments/99826.html</wfw:comment><comments>http://www.cppblog.com/Voider/archive/2009/10/30/99826.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Voider/comments/commentRss/99826.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Voider/services/trackbacks/99826.html</trackback:ping><description><![CDATA[

<a href="http://www.cplusplus.com/reference/stl/deque/">http://www.cplusplus.com/reference/stl/deque/</a><div><a href="http://www.cplusplus.com/reference/stl/deque/"></a><span style="font-family: verdana, arial, helvetica, sans-serif; font-size: 14px; ">Deque sequences have the following properties:<br><ul style="margin-top: 0px; margin-bottom: 0px; "><li>Individual elements can be accessed by their position index.</li><li>Iteration over the elements can be performed in any order.</li><li>Elements can be efficiently added and removed from any of its ends (<span style="text-decoration: underline;">either the beginning or the end of the sequence</span>)</li><li><br></li></ul></span><br>On the drawback side, unlike <a href="http://www.cplusplus.com/vector">vector</a>s, <a href="http://www.cplusplus.com/deque">deque</a>s
are not guaranteed to have all its elements in contiguous连续的 storage
locations, eliminating排除 thus the possibility of safe access through
<span style="text-decoration: underline;">pointer arithmetic</span>s.<br><span style="font-family: verdana, arial, helvetica, sans-serif; font-size: 14px; ">For operations that involve frequent insertion or removals of elements at positions other than the beginning or the end,&nbsp;<a href="http://www.cplusplus.com/deque" style="color: rgb(0, 44, 153); text-decoration: none; ">deque</a>s perform worse and have less consistent iterators and references than&nbsp;<a href="http://www.cplusplus.com/list" style="color: rgb(0, 44, 153); text-decoration: none; ">list</a>s.</span>
</div><img src ="http://www.cppblog.com/Voider/aggbug/99826.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Voider/" target="_blank">Voider</a> 2009-10-30 14:45 <a href="http://www.cppblog.com/Voider/archive/2009/10/30/99826.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ 运算符优先级列表</title><link>http://www.cppblog.com/Voider/archive/2009/10/30/99807.html</link><dc:creator>Voider</dc:creator><author>Voider</author><pubDate>Fri, 30 Oct 2009 02:31:00 GMT</pubDate><guid>http://www.cppblog.com/Voider/archive/2009/10/30/99807.html</guid><wfw:comment>http://www.cppblog.com/Voider/comments/99807.html</wfw:comment><comments>http://www.cppblog.com/Voider/archive/2009/10/30/99807.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Voider/comments/commentRss/99807.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Voider/services/trackbacks/99807.html</trackback:ping><description><![CDATA[<h2>
<a  href="http://www.cppblog.com/aqazero/archive/2006/06/08/8284.html" id="viewpost1_TitleUrl">C++ 运算符优先级列表</a>
</h2>
<a  href="http://www.cppreference.com/operator_precedence.html">http://www.cppreference.com/operator_precedence.html</a>
<br>http://www.cppblog.com/aqazero/archive/2006/06/08/8284.html<br>
<table class="code-table" border="1">
    <tbody>
        <tr>
            <th class="code-table-th">Precedence</th>
            <th class="code-table-th">Operator</th>
            <th class="code-table-th">Description</th>
            <th class="code-table-th">Example</th>
            <th class="code-table-th">Associativity</th>
        </tr>
        <tr>
            <td class="code-table-td">1</td>
            <td class="code-table-td">()<br>[]<br>-&gt;<br>.<br>::<br>++<br>--</td>
            <td class="code-table-td">Grouping operator<br>Array access<br>Member access from a pointer<br>Member access from an object<br>Scoping operator<br>Post-increment<br>Post-decrement</td>
            <td class="code-table-td">(a + b) / 4;<br>array[4] = 2;<br>ptr-&gt;age = 34;<br>obj.age = 34;<br>Class::age = 2;<br>for( i = 0; i &lt; 10; i++ ) ...<br>for( i = 10; i &gt; 0; i-- ) ...</td>
            <td class="code-table-td">left to right</td>
        </tr>
        <tr>
            <td class="code-table-td">2</td>
            <td class="code-table-td">!<br>~<br>++<br>--<br>-<br>+<br>*<br>&amp;<br>(type)<br><a  href="http://www.cppreference.com/keywords/sizeof.html">sizeof</a></td>
            <td class="code-table-td">Logical negation<br>Bitwise complement<br>Pre-increment<br>Pre-decrement<br>Unary minus<br>Unary plus<br>Dereference<br>Address of<br>Cast to a given type<br>Return size in bytes</td>
            <td class="code-table-td">if( !done ) ...<br>flags = ~flags;<br>for( i = 0; i &lt; 10; ++i ) ...<br>for( i = 10; i &gt; 0; --i ) ...<br>int i = -1;<br>int i = +1;<br>data = *ptr;<br>address = &amp;obj;<br>int i = (int) floatNum;<br>int size = sizeof(floatNum);</td>
            <td class="code-table-td">right to left</td>
        </tr>
        <tr>
            <td class="code-table-td">3</td>
            <td class="code-table-td">-&gt;*<br>.*</td>
            <td class="code-table-td">Member pointer selector<br>Member pointer selector</td>
            <td class="code-table-td">ptr-&gt;*var = 24;<br>obj.*var = 24;</td>
            <td class="code-table-td">left to right</td>
        </tr>
        <tr>
            <td class="code-table-td">4</td>
            <td class="code-table-td">*<br>/<br>%</td>
            <td class="code-table-td">Multiplication<br>Division<br>Modulus</td>
            <td class="code-table-td">int i = 2 * 4;<br>float f = 10 / 3;<br>int rem = 4 % 3;</td>
            <td class="code-table-td">left to right</td>
        </tr>
        <tr>
            <td class="code-table-td">5</td>
            <td class="code-table-td">+<br>-</td>
            <td class="code-table-td">Addition<br>Subtraction</td>
            <td class="code-table-td">int i = 2 + 3;<br>int i = 5 - 1;</td>
            <td class="code-table-td">left to right</td>
        </tr>
        <tr>
            <td class="code-table-td">6</td>
            <td class="code-table-td">&lt;&lt;<br>&gt;&gt;</td>
            <td class="code-table-td">Bitwise shift left<br>Bitwise shift right</td>
            <td class="code-table-td">int flags = 33 &lt;&lt; 1;<br>int flags = 33 &gt;&gt; 1;</td>
            <td class="code-table-td">left to right</td>
        </tr>
        <tr>
            <td class="code-table-td">7</td>
            <td class="code-table-td">&lt;<br>&lt;=<br>&gt;<br>&gt;=</td>
            <td class="code-table-td">Comparison less-than<br>Comparison less-than-or-equal-to<br>Comparison greater-than<br>Comparison geater-than-or-equal-to</td>
            <td class="code-table-td">if( i &lt; 42 ) ...<br>if( i &lt;= 42 ) ...<br>if( i &gt; 42 ) ...<br>if( i &gt;= 42 ) ...</td>
            <td class="code-table-td">left to right</td>
        </tr>
        <tr>
            <td class="code-table-td">8</td>
            <td class="code-table-td">==<br>!=</td>
            <td class="code-table-td">Comparison equal-to<br>Comparison not-equal-to</td>
            <td class="code-table-td">if( i == 42 ) ...<br>if( i != 42 ) ...</td>
            <td class="code-table-td">left to right</td>
        </tr>
        <tr>
            <td class="code-table-td">9</td>
            <td class="code-table-td">&amp;</td>
            <td class="code-table-td">Bitwise AND</td>
            <td class="code-table-td">flags = flags &amp; 42;</td>
            <td class="code-table-td">left to right</td>
        </tr>
        <tr>
            <td class="code-table-td">10</td>
            <td class="code-table-td">^</td>
            <td class="code-table-td">Bitwise exclusive OR</td>
            <td class="code-table-td">flags = flags ^ 42;</td>
            <td class="code-table-td">left to right</td>
        </tr>
        <tr>
            <td class="code-table-td">11</td>
            <td class="code-table-td">|</td>
            <td class="code-table-td">Bitwise inclusive (normal) OR</td>
            <td class="code-table-td">flags = flags | 42;</td>
            <td class="code-table-td">left to right</td>
        </tr>
        <tr>
            <td class="code-table-td">12</td>
            <td class="code-table-td">&amp;&amp;</td>
            <td class="code-table-td">Logical AND</td>
            <td class="code-table-td">if( conditionA &amp;&amp; conditionB ) ...</td>
            <td class="code-table-td">left to right</td>
        </tr>
        <tr>
            <td class="code-table-td">13</td>
            <td class="code-table-td">||</td>
            <td class="code-table-td">Logical OR</td>
            <td class="code-table-td">if( conditionA || conditionB ) ...</td>
            <td class="code-table-td">left to right</td>
        </tr>
        <tr>
            <td class="code-table-td">14</td>
            <td class="code-table-td">? :</td>
            <td class="code-table-td">Ternary conditional (if-then-else)</td>
            <td class="code-table-td">int i = (a &gt; b) ? a : b;</td>
            <td class="code-table-td">right to left</td>
        </tr>
        <tr>
            <td class="code-table-td">15</td>
            <td class="code-table-td">=<br>+=<br>-=<br>*=<br>/=<br>%=<br>&amp;=<br>^=<br>|=<br>&lt;&lt;=<br>&gt;&gt;=</td>
            <td class="code-table-td">Assignment operator<br>Increment and assign<br>Decrement and assign<br>Multiply and assign<br>Divide and assign<br>Modulo and assign<br>Bitwise AND and assign<br>Bitwise exclusive OR and assign<br>Bitwise inclusive (normal) OR and assign<br>Bitwise shift left and assign<br>Bitwise shift right and assign</td>
            <td class="code-table-td">int a = b;<br>a += 3;<br>b -= 4;<br>a *= 5;<br>a /= 2;<br>a %= 3;<br>flags &amp;= new_flags;<br>flags ^= new_flags;<br>flags |= new_flags;<br>flags &lt;&lt;= 2;<br>flags &gt;&gt;= 2;</td>
            <td class="code-table-td">right to left</td>
        </tr>
        <tr>
            <td class="code-table-td">16</td>
            <td class="code-table-td">,</td>
            <td class="code-table-td">Sequential evaluation operator</td>
            <td class="code-table-td">for( i = 0, j = 0; i &lt; 10; i++, j++ ) ...</td>
            <td class="code-table-td">left to right</td>
        </tr>
    </tbody>
</table><img src ="http://www.cppblog.com/Voider/aggbug/99807.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Voider/" target="_blank">Voider</a> 2009-10-30 10:31 <a href="http://www.cppblog.com/Voider/archive/2009/10/30/99807.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>C++ 高手必读书 </title><link>http://www.cppblog.com/Voider/archive/2009/08/19/93775.html</link><dc:creator>Voider</dc:creator><author>Voider</author><pubDate>Wed, 19 Aug 2009 01:55:00 GMT</pubDate><guid>http://www.cppblog.com/Voider/archive/2009/08/19/93775.html</guid><wfw:comment>http://www.cppblog.com/Voider/comments/93775.html</wfw:comment><comments>http://www.cppblog.com/Voider/archive/2009/08/19/93775.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Voider/comments/commentRss/93775.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Voider/services/trackbacks/93775.html</trackback:ping><description><![CDATA[<div class="postcontent">
<p>&nbsp; 转：http://www.cppblog.com/benbendy/archive/2008/05/23/50830.html&nbsp;&nbsp;&nbsp;&nbsp; <br></p>
<p style="text-align: left;">&nbsp; 转:&nbsp; <a href="http://hi.baidu.com/gwabit/blog/item/7a188726f2dc91178a82a1b6.html">http://hi.baidu.com/gwabit/blog/item/7a188726f2dc91178a82a1b6.html</a></p>
<span style="font-size: 8pt;"><span style="font-size: 10pt;"><span style="font-size: 10pt;"><span style="font-size: 12pt;"><span style="font-size: 18pt;">
</span></span></span></span></span>
<p><br>&nbsp;<span style="font-family: 黑体;">C++/OPP/OOD系列:</span><br></p>
<p>层级一：语法/语意(C++)<br>1.1 [Lippman2000]&nbsp;Essential&nbsp;C++<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Essential&nbsp;C++,by&nbsp;Stanley&nbsp;B.&nbsp;Lippman&nbsp;Addison&nbsp;Wesley&nbsp;Longman&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2000,276&nbsp;pages<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Essential&nbsp;C++&nbsp;中文版&nbsp;，侯俊杰&nbsp;译，282页&nbsp;&nbsp;</p>
<p>1.2 [Gregory95]&nbsp;C++:The&nbsp;Core&nbsp;Language&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C++:The&nbsp;Core&nbsp;Language&nbsp;by&nbsp;Gregory&nbsp;Satir&nbsp;1995&nbsp;O'Reilly<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C++语言核心，张铭泽　译&nbsp;，236页</p>
<p>1.3 [Deitel98]&nbsp;The&nbsp;Complete&nbsp;C++&nbsp;Training&nbsp;Course&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;Complete&nbsp;C++&nbsp;Training&nbsp;Course&nbsp;2/e&nbsp;by&nbsp;Harvey&nbsp;M.Deitel&nbsp;1998&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Prentice&nbsp;Hall<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C++大学教程(第二版)，邱仲潘等　译，816页</p>
<p>1.4 [Stevens2000]&nbsp;Standard&nbsp;C++&nbsp;Bible<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Standard&nbsp;C++&nbsp;Bible&nbsp;&nbsp;&nbsp;2000&nbsp;&nbsp;Al&nbsp;Stevens&nbsp;&nbsp;&nbsp;IDG&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;标准C++宝典，林丽闽等&nbsp;译，766页</p>
<p>1.5 [Eckel2000]&nbsp;Thinking&nbsp;in&nbsp;C++&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Thinking&nbsp;in&nbsp;C++&nbsp;2/e&nbsp;&nbsp;&nbsp;Bruce&nbsp;Eckel&nbsp;&nbsp;2000&nbsp;1470&nbsp;pages&nbsp;Prentice&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Hall<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C++&nbsp;编程思想，刘宗田等&nbsp;译，420页</p>
<p>1.6 [Lippman98]&nbsp;C++Primer&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C++&nbsp;Primer,3rd&nbsp;Editoin,by&nbsp;Stanley&nbsp;Lippman&nbsp;and&nbsp;Josee&nbsp;Lajoie&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Addison&nbsp;Wesley&nbsp;Longman,1998&nbsp;1237&nbsp;pages<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C++&nbsp;Primer&nbsp;中文版，侯俊杰&nbsp;译，1999，1237页</p>
<p>1.7 [Struostrup2000]&nbsp;The&nbsp;C++&nbsp;Programming&nbsp;Language<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;C++&nbsp;Programming&nbsp;Language,Special&nbsp;Editoin,by&nbsp;Bjarne&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Stroustrup<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Addison&nbsp;Wesley&nbsp;Longman,2000,1017&nbsp;pages<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;C++程序语言经典本，叶秉哲&nbsp;译，儒林&nbsp;1999</p>
<p>1.7 [ANSI&nbsp;C++]&nbsp;C++规格书&nbsp;1998.9.1&nbsp;PDF格式<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ANSI&nbsp;C++&nbsp;1996&nbsp;Draft</p>
<p><br>层级二：专家经验(C++/OOP)<br>2.1 [Meyers96]&nbsp;More&nbsp;Effective&nbsp;C++<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;More&nbsp;Effective&nbsp;C++,by&nbsp;Scott&nbsp;Meyers,Addison&nbsp;Wesley,1996,318pages<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;More&nbsp;Effective&nbsp;C++中文版，侯俊杰，培生&nbsp;2000.&nbsp;318页</p>
<p>2.2 [Meyers98]&nbsp;Effective&nbsp;C++&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Effective&nbsp;C++，Second&nbsp;Edition,by&nbsp;Scott&nbsp;Meyers,Addison&nbsp;Wesley&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Longman,1998.256pages<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Effective&nbsp;C++&nbsp;2/e&nbsp;中文版,侯俊杰,培生&nbsp;2000.256页</p>
<p>2.3 [Sutter99]&nbsp;Exceptional&nbsp;C++<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exceptional&nbsp;C++，by&nbsp;Herb&nbsp;Sutter,Addison&nbsp;Wesley&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Longman,2000.208pages<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Exceptional&nbsp;C++中文版，侯俊杰,培生&nbsp;2000.248页</p>
<p>2.4 [Sutter2001]More&nbsp;Exceptional&nbsp;C++&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;More&nbsp;Exceptional&nbsp;C++&nbsp;by&nbsp;Herb&nbsp;Sutter,Addison&nbsp;Wesley&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Longman,2001.</p>
<p>层级三：底层机制(C++&nbsp;Object&nbsp;Model)<br></p>
<p>3.1&nbsp; [Ellis90]&nbsp;The&nbsp;Annotated&nbsp;C++&nbsp;Reference&nbsp;Manual<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;Annotated&nbsp;C++&nbsp;Reference&nbsp;Manual,by&nbsp;Margaret&nbsp;A.Ellis&nbsp;and&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bjarne&nbsp;Stroustrup&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Addison&nbsp;Wesley&nbsp;Longman,1990,447&nbsp;pages.</p>
<p>3.2&nbsp; [Lippman96]&nbsp;Inside&nbsp;the&nbsp;C++&nbsp;Object&nbsp;Model<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Inside&nbsp;the&nbsp;C++&nbsp;Object&nbsp;Model,by&nbsp;Stanley&nbsp;Lippman,Addison&nbsp;Wesley&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Longman,1996,280pages<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;深度探索C++物件模型，侯俊杰&nbsp;译&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p>
<p>&nbsp;层级四：设计观念的复用(C++/Patterns)<br>&nbsp;</p>
<p>4.1&nbsp; [Gamma95]&nbsp;Design&nbsp;Patterns：Elements&nbsp;of&nbsp;Reusable&nbsp;Object&nbsp;Oriented&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Software,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;by&nbsp;Erich&nbsp;Gamma,Richard&nbsp;Helm,Ralph&nbsp;Johnson,and&nbsp;John&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Vlissides,Addison&nbsp;Wesley,1995.395pages<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;设计模式,李英军等译,机械工业出版社,2000.254页</p>
<p>4.2 &nbsp; [Alex2001]Modern&nbsp;C++&nbsp;Design:&nbsp;Generic&nbsp;Programming&nbsp;and&nbsp;Design&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Patterns&nbsp;Applied<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;by&nbsp;Andrei&nbsp;Alexandrescu,Addison-Wesley,2001,352Paper</p>
<p><br>&nbsp;Genericity/STL系列:<br></p>
<p>&nbsp;第一个境界是使用STL:<br>&nbsp; [Josuttis99]:The&nbsp;C++&nbsp;Standard&nbsp;Library&nbsp;－A&nbsp;Tutorial&nbsp;and&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Reference,by&nbsp;Nicolai&nbsp;M.Josuttis,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Addison&nbsp;Wesley&nbsp;1999.799pages</p>
<p>&nbsp; 第二个境界是了解泛型技术的内涵与STL的学理:<br>&nbsp;&nbsp; [Austern98]:Generic&nbsp;Programming&nbsp;and&nbsp;the&nbsp;STL&nbsp;-Using&nbsp;and&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Extending&nbsp;the&nbsp;C++&nbsp;Standard&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Template&nbsp;library,by&nbsp;Matthew&nbsp;H.Austern,Addison&nbsp;Wesley&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1998.548page</p>
<p><br>&nbsp; 第三个境界是扩充STL:<br>&nbsp;&nbsp; [Stepanov2001]:C++&nbsp;Standard&nbsp;Template&nbsp;Library&nbsp;by&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P.J.Plauger,Alexander&nbsp;A.Stepanov,<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Meng&nbsp;Lee,David&nbsp;R.Musser,Prentice&nbsp;Hall&nbsp;2001&nbsp;</p>
<p>&nbsp; 这些就是你应该看的书，如果你想成为高手。</p>
</div><img src ="http://www.cppblog.com/Voider/aggbug/93775.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Voider/" target="_blank">Voider</a> 2009-08-19 09:55 <a href="http://www.cppblog.com/Voider/archive/2009/08/19/93775.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>c++程序员的几个境界（转）</title><link>http://www.cppblog.com/Voider/archive/2008/09/07/61252.html</link><dc:creator>Voider</dc:creator><author>Voider</author><pubDate>Sun, 07 Sep 2008 13:12:00 GMT</pubDate><guid>http://www.cppblog.com/Voider/archive/2008/09/07/61252.html</guid><wfw:comment>http://www.cppblog.com/Voider/comments/61252.html</wfw:comment><comments>http://www.cppblog.com/Voider/archive/2008/09/07/61252.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Voider/comments/commentRss/61252.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Voider/services/trackbacks/61252.html</trackback:ping><description><![CDATA[作者risc700 <br>1, 简历上写着了解c++, 实际上不知道mfc 根 VC有什么区别. 0级<br>2, 简历上写着精通c++, 但是仅仅知道mfc, 认为VC就是C++的一切。 1级<br>3, 总是使用malloc，或者 char[100] 来获得内存，但不知道怎么在指定内存上面创建对象。 2级<br>4, 感觉std::string 没有 CString 好用! 听说过g++ 3级<br>5, 会使用std::string, 认为 "c/c++" 很不科学,完全就不是一个语言嘛. 知道4种以上c++ compiler. 感觉自己什么都会。 4级<br>6, 看山是山，看水是水。崇拜boost source code， 呕心沥血的研究经典库的代码. 感觉自己什么都不会。5级<br>7, 看山不是山，看水不是水。为自己钟情的函数库而奋斗着,恨不得用尽各种tricks 和 traits, 因为各种经典设计模式想得头疼. 稍有走火入魔迹象。 6级<br>8,看山仍然山，看水仍然是水。 看到每行代码，都是汇编的指令和内存数据的移动。 代码中几乎不出现for 和 while 关键字. 不停地否定自己的过去. 7级<br>9, 维护着g++,或者Watcom C++ 之类的项目,头发也比较长,有艺术家气质. 8级<br>10, 参与 C++ Standards Committee, 代表不同的利益集团发言. 9级<br>11, 彻底走火入魔, 成天幻想修改C++的语法, 添加自己的关键字, 重新实现一个C++的改进, 还想把c++变成脚本,解释执行.已经超越了利益. 10级.<br><br>C++的四层境界
<br>
<br>
<br>  1。程序员。
<br>  有时被称为蓝领，在C++开发小组扮演有用的角色，
<br>  但是遇到设计难题时，需要高级程序员指导
<br>
<br>
<br>  2。高级程序员
<br>  与普通程序员的区别是，能独立地解决大多数C++设计难题。
<br>  要达到这一层次需要至少经过三个复杂的C++PROJECT，并积累了一些设计失败的教
<br>
<br>  训。
<br>
<br>  经过努力，大多数C++编程人员都能达到这一高级程序员的境界。
<br>
<br>  3。一个公司里的GURU
<br>  也就是常说的一软件公司里的牛人，可称为一个公司里的GURU，
<br>  他们拿着相当高的薪水。，领导一个公司的技术设计。
<br>  这样的人需要十年以上OO的经验并经历多个大型软件成功和失败。
<br>
<br>
<br>  4。工业界的GURU
<br>
<br>  这样人在所在的领域如雷贯耳，几乎很少有公司能够雇得起他们。
<br>  他们通常经营着自己的咨询公司。达到境界4的GURU们，几乎在每天的空闲散步时间
<br>
<br>  里都在思考技术。
<br>
<br>  对大多数程序员来说，想达到他们的境界，是不现实的。
<br>
<br>
<br>  -------C++   FAQ
<br>  三位作者：
<br>  Cline   :     Internet   offical   Forum   C++FAQ   主持人，给数千名C++工程师上过课，
<br>  计算机专业博士
<br>  Lomow:   高级机构设计师，15年OO开发经验，计算机专业博士
<br>  Girou:     国际C++标准委员会成员，数学专业博士 <br><img src ="http://www.cppblog.com/Voider/aggbug/61252.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Voider/" target="_blank">Voider</a> 2008-09-07 21:12 <a href="http://www.cppblog.com/Voider/archive/2008/09/07/61252.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>&lt;&lt;Expert C Programming&gt;&gt;_Chapter04</title><link>http://www.cppblog.com/Voider/archive/2008/09/07/ExpertCProgramming.html</link><dc:creator>Voider</dc:creator><author>Voider</author><pubDate>Sun, 07 Sep 2008 12:59:00 GMT</pubDate><guid>http://www.cppblog.com/Voider/archive/2008/09/07/ExpertCProgramming.html</guid><wfw:comment>http://www.cppblog.com/Voider/comments/61250.html</wfw:comment><comments>http://www.cppblog.com/Voider/archive/2008/09/07/ExpertCProgramming.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Voider/comments/commentRss/61250.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Voider/services/trackbacks/61250.html</trackback:ping><description><![CDATA[//file1.c<br>#include &lt;stdio.h&gt;<br><br>char ch[10];<br>//file2.c<br>#include &lt;stdio.h&gt;<br><br>extern char *ch;<br><br>int main()<br>{<br>&nbsp; ch[0]=1;&nbsp; <br>&nbsp; return 0;<br>}<br>---------------------------------------<br>gcc file1.c file2.c -o ap<br>./ap<br>段错误<br>-----------------------------------------------<br>1，array vs pointer<br>file2,c ch[i]实际上得到的是一个字符，但编译器把它当成是一个指针，因为此文件中声明为指针<br>先取地址ch的内容，加上i,当作字符ch[i]的地址。实际上所谓的地址是ch[0]+i;<br>char ch[10]; 符号ch具有一个地址，ch[i],只需将i+ch具有的地址相加，再取其指向的内容<br>extern char *ch; ch[i],得到地址p的内容，把它加上i，再取所得地址指向的内容。<br>而事实上p指向的内容是ch[0]//one char.而非地址。<br><br>2.定义vs声明<br>定义只有一次，且分配内存，一种特殊的声明。<br>声明可多次，不分配内存。<br><br>3.编译器不为指针指向的对象分配空间，只是分配指针本身的空间。<br>除非在定义时赋一string初始化，且只可以是字符串常量。只读不可修改。<br>&nbsp;char *p="Hello world";<br>&nbsp; p[0]='h'; //段错误。 <br><br><br><img src ="http://www.cppblog.com/Voider/aggbug/61250.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Voider/" target="_blank">Voider</a> 2008-09-07 20:59 <a href="http://www.cppblog.com/Voider/archive/2008/09/07/ExpertCProgramming.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>