<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8">
<meta name="generator" content="pdf2htmlEX">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<link rel="stylesheet" href="https://static.pudn.com/base/css/base.min.css">
<link rel="stylesheet" href="https://static.pudn.com/base/css/fancy.min.css">
<link rel="stylesheet" href="https://static.pudn.com/prod/directory_preview_static/62feebd4f97302478e7307ce/raw.css">
<script src="https://static.pudn.com/base/js/compatibility.min.js"></script>
<script src="https://static.pudn.com/base/js/pdf2htmlEX.min.js"></script>
<script>
try{
pdf2htmlEX.defaultViewer = new pdf2htmlEX.Viewer({});
}catch(e){}
</script>
<title></title>
</head>
<body>
<div id="sidebar" style="display: none">
<div id="outline">
</div>
</div>
<div id="pf1" class="pf w0 h0" data-page-no="1"><div class="pc pc1 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/62feebd4f97302478e7307ce/bg1.jpg"><div class="t m0 x1 h2 y1 ff1 fs0 fc0 sc0 ls0 ws0">C<span class="_ _0"> </span>语言深度解剖</div><div class="t m0 x2 h3 y2 ff2 fs1 fc0 sc1 ls1 ws0">--------------<span class="_ _1"></span>-----<span class="ff1 ls2">解开程序员面试笔试的秘密</span></div><div class="t m0 x3 h4 y3 ff1 fs1 fc0 sc0 ls3 ws0">以含金量勇敢挑战国内外同类书籍</div><div class="t m0 x4 h4 y4 ff1 fs1 fc0 sc1 ls2 ws0">陈正冲<span class="_ _2"> </span>编著</div><div class="t m0 x4 h4 y5 ff1 fs1 fc0 sc1 ls4 ws0">石虎<span class="_ _3"> </span>审<span class="_ _4"></span>阅</div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
</body>
</html>
<div id="pf2" class="pf w0 h0" data-page-no="2"><div class="pc pc2 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/62feebd4f97302478e7307ce/bg2.jpg"><div class="t m0 x5 h5 y6 ff1 fs2 fc0 sc0 ls5 ws0">版权申明</div><div class="t m0 x6 h6 y7 ff1 fs3 fc0 sc0 ls6 ws0">本书尚未出版,<span class="_ _5"></span>先放到网上给大家免费</div><div class="t m0 x7 h6 y8 ff1 fs3 fc0 sc0 ls7 ws0">下载和阅览。<span class="_ _6"></span>本书正式出版前读者可以仔细</div><div class="t m0 x7 h6 y9 ff1 fs3 fc0 sc0 ls8 ws0">研读和自由传阅本书电子版,<span class="_ _6"></span>但不允许私自</div><div class="t m0 x7 h6 ya ff1 fs3 fc0 sc0 ls9 ws0">大量印刷和销售。<span class="_ _6"></span>出版社如想出版此书可通</div><div class="t m0 x7 h6 yb ff1 fs3 fc0 sc0 lsa ws0">过邮件或博客留言联系作者商谈出版事宜。</div><div class="t m0 x6 h6 yc ff1 fs3 fc0 sc0 lsb ws0">对于非法盗印或盗版,<span class="_ _6"></span>作者将本着愚公</div><div class="t m0 x7 h6 yd ff1 fs3 fc0 sc0 lsc ws0">移山的精神,<span class="_ _7"></span>孜孜不倦的与盗版者周旋,<span class="_ _7"></span>直</div><div class="t m0 x7 h6 ye ff1 fs3 fc0 sc0 ls9 ws0">至法律做出公正的裁决。</div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf3" class="pf w0 h0" data-page-no="3"><div class="pc pc3 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/62feebd4f97302478e7307ce/bg3.jpg"><div class="t m0 x8 h6 yf ff1 fs3 fc0 sc0 ls7 ws0">写在前言前面的话</div><div class="t m0 x9 h7 y10 ff1 fs4 fc0 sc1 lsd ws0">最近面试了一些人,包括应届本科、硕<span class="lse">士和工作多年的程序员,</span></div><div class="t m0 x7 h7 y11 ff1 fs4 fc0 sc1 ls2 ws0">在问到<span class="_ _8"> </span>C<span class="_ _8"> </span>语言相关的问题的时候<span class="lsf">,总是没几个人能完全答上我的问</span></div><div class="t m0 x7 h7 y12 ff1 fs4 fc0 sc1 lse ws0">题。<span class="_ _9"></span>甚至一些工作多年,<span class="_ _9"></span>简历上写着<span class="_ _9"></span>“最得意的语言是<span class="_ _8"> </span>C<span class="_ _8"> </span>语言”<span class="_ _a"></span><span class="ls2">,<span class="_ _b"></span><span class="ls10">“对</span></span></div><div class="t m0 x7 h7 y13 ff1 fs4 fc0 sc1 ls2 ws0">C<span class="_ _8"> </span>有很深的研究”<span class="_ _a"></span>,<span class="_ _a"></span><span class="ls11">“精通<span class="_ _8"> </span>C<span class="_ _8"> </span>语言”<span class="_ _c"></span>的人也答不完全我的问题,<span class="_ _c"></span>甚至有</span></div><div class="t m0 x7 h7 y14 ff1 fs4 fc0 sc1 ls12 ws0">个别人我问的问题一个都答不上。<span class="_ _d"></span><span class="ls11">于是我就想起了我去年闲的使用写</span></div><div class="t m0 x7 h7 y15 ff1 fs4 fc0 sc1 lse ws0">的这本小册子。</div><div class="t m0 x9 h7 y16 ff1 fs4 fc0 sc1 lsf ws0">这本小册子已经在我电脑里<span class="ls10">睡了一年大觉了。<span class="_ _d"></span><span class="lsf">并非没有出版社愿</span></span></div><div class="t m0 x7 h7 y17 ff1 fs4 fc0 sc1 lsf ws0">意出版,<span class="_ _5"></span><span class="ls13">而是几个大的出版社都认为书写得不错,<span class="_ _e"></span><span class="ls2">但太薄,<span class="_ _e"></span><span class="ls14">利润太低,</span></span></span></div><div class="t m0 x7 h7 y18 ff1 fs4 fc0 sc1 lsd ws0">所以要求我加厚到<span class="_ _8"> </span>300<span class="_ _8"> </span>页以上。<span class="_ _7"></span>我拒绝加厚,<span class="_ _7"></span>并为此和几个出版社僵</div><div class="t m0 x7 h7 y19 ff1 fs4 fc0 sc1 lse ws0">持了一年多。<span class="_ _f"></span>我认为经典的东西一定<span class="ls15">要精炼,<span class="_ _f"></span>不要废话。<span class="_ _f"></span>这次由于面</span></div><div class="t m0 x7 h7 y1a ff1 fs4 fc0 sc1 lsf ws0">试别人,<span class="_ _f"></span>所以终于记起了我还写过这<span class="ls15">么一本小册子。<span class="_ _f"></span>想了想,<span class="_ _9"></span>还是决</span></div><div class="t m0 x7 h7 y1b ff1 fs4 fc0 sc1 ls2 ws0">定挂到网上免费让大家看得了。<span class="_ _7"></span>并为此专门为本书开了个博客,<span class="_ _7"></span>以<span class="_ _c"></span>方</div><div class="t m0 x7 h7 y1c ff1 fs4 fc0 sc1 ls16 ws0">便和读者交流。博客地址:<span class="fc1 ls12">http://blog.csdn.<span class="ls2">net/dissection_c</span></span></div><div class="t m0 x9 h7 y1d ff1 fs4 fc0 sc1 ls14 ws0">作者简介:</div><div class="t m0 x9 h7 y1e ff1 fs4 fc0 sc1 ls11 ws0">陈正冲:<span class="_ _f"></span>湖南沅江人,<span class="_ _f"></span>毕业于长春光<span class="ls17">学精密机械学院<span class="_ _f"></span>(长春理工</span></div><div class="t m0 x7 h7 y1f ff1 fs4 fc0 sc1 lse ws0">大学)数学系。目前从事嵌入式<span class="ls2">软件开发和管理方面的工作。</span></div><div class="t m0 x9 h7 y20 ff1 fs4 fc0 sc1 ls18 ws0">石虎:<span class="_ _f"></span>湖南沅江人,<span class="_ _f"></span>毕业于吉<span class="ls19">林大学计算机系。<span class="_ _9"></span>目前为大连交通</span></div><div class="t m0 x7 h7 y21 ff1 fs4 fc0 sc1 ls16 ws0">大学计算机系讲师。</div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf4" class="pf w0 h0" data-page-no="4"><div class="pc pc4 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/62feebd4f97302478e7307ce/bg4.jpg"><div class="t m0 xa h4 y22 ff1 fs1 fc0 sc0 ls1a ws0">前言</div><div class="t m0 xb h4 y23 ff1 fs1 fc0 sc1 ls2 ws0">我遇到过很多程序员和计算机系毕业的学生,<span class="_ _d"></span>也给很多程序员和计算机系毕业的学生讲</div><div class="t m0 xc h3 y24 ff1 fs1 fc0 sc1 ls2 ws0">解过<span class="_ _9"></span>《高级<span class="_ _10"> </span><span class="ff2">C<span class="_ _10"> </span></span>语言程序设计》<span class="_ _11"></span>。<span class="_ _9"></span>每期班开课前,<span class="_ _9"></span>我总会问学生:<span class="_ _12"></span>你感觉<span class="_ _13"> </span><span class="ff2">C<span class="_ _13"> </span></span>语言学得怎么样?</div><div class="t m0 xc h3 y25 ff1 fs1 fc0 sc1 ls2 ws0">难吗?指针明白吗?数组呢?内存管理呢?往往学生回答说:<span class="_ _f"></span>感觉还可以,<span class="_ _f"></span><span class="ff2">C<span class="_ _13"> </span><span class="ff1">语言不难,<span class="_ _9"></span>指</span></span></div><div class="t m0 xc h4 y26 ff1 fs1 fc0 sc1 ls2 ws0">针很明白,数组很简单,内存管理也不难。一般我会再问一个问题:通过这个班的学习,</div><div class="t m0 xc h3 y27 ff1 fs1 fc0 sc1 ls2 ws0">你想达到什么程度?很多学生回答:精通<span class="_ _13"> </span><span class="ff2">C<span class="_ _10"> </span></span>语言。我告诉他们:我很无奈,也很无语。因</div><div class="t m0 xc h3 y28 ff1 fs1 fc0 sc1 ls2 ws0">为我完全在和一群业余者或者是<span class="_ _13"> </span><span class="ff2">C<span class="_ _10"> </span></span>语言爱好者在对话。你们大学的计算机教育根本就是在</div><div class="t m0 xc h3 y29 ff1 fs1 fc0 sc1 ls2 ws0">浪费你们的时间,念了几年大学,连<span class="_ _13"> </span><span class="ff2">C<span class="_ _10"> </span></span>语言的门都没摸着。现在大多数学校计算机系都开</div><div class="t m0 xc h3 y2a ff1 fs1 fc0 sc1 ls2 ws0">了<span class="_ _13"> </span><span class="ff2">C</span>、<span class="ff2 ls1b">C+<span class="_ _c"></span>+<span class="ff1 ls2">、</span><span class="ls1c">Java<span class="ff1 ls2">、<span class="_ _12"></span><span class="ff2 ls1b">C#<span class="ff1 ls1d">等等语言,好像什么都学了,<span class="_ _12"></span>但是什么都不会,更可悲的是有些大<span class="_ _1"></span>学</span></span></span></span></span></div><div class="t m0 xc h3 y2b ff1 fs1 fc0 sc1 ls2 ws0">居然取消了<span class="_ _13"> </span><span class="ff2">C<span class="_ _10"> </span></span>语言课程,<span class="_ _c"></span>认为其过时了。<span class="_ _c"></span>我个人的观点是<span class="_ _c"></span>“十鸟在林,<span class="_ _c"></span>不如一鸟在手”<span class="_ _11"></span><span class="ls1e">,真</span></div><div class="t m0 xc h3 y2c ff1 fs1 fc0 sc1 ls2 ws0">正把<span class="_ _13"> </span><span class="ff2">C<span class="_ _10"> </span></span>语言整明白了再学别的语言也很简单,如果<span class="_ _13"> </span><span class="ff2">C<span class="_ _13"> </span></span>语言都没整明白,别的语言学得再好</div><div class="t m0 xc h4 y2d ff1 fs1 fc0 sc1 ls2 ws0">也是花架子,因为你并不了解底层是怎么回事。当然我也从来不认为一个没学过汇编的人</div><div class="t m0 xc h3 y2e ff1 fs1 fc0 sc1 ls2 ws0">能真正掌握<span class="_ _13"> </span><span class="ff2">C<span class="_ _10"> </span></span>语言的真谛。我个人一直认为,普通人用<span class="_ _13"> </span><span class="ff2">C<span class="_ _13"> </span></span>语言在<span class="_ _10"> </span><span class="ff2">3<span class="_ _13"> </span></span>年之下,一般来说,还</div><div class="t m0 xc h3 y2f ff1 fs1 fc0 sc1 ls2 ws0">没掌握<span class="_ _13"> </span><span class="ff2">C<span class="_ _10"> </span></span>语言;<span class="ff2">5<span class="_ _13"> </span></span>年之下,一般来说还没熟悉<span class="_ _13"> </span><span class="ff2">C<span class="_ _13"> </span></span>语言;<span class="ff2 ls1f">10<span class="_ _13"> </span></span>年之下,谈不上精通。所以,我</div><div class="t m0 xc h4 y30 ff1 fs1 fc0 sc1 ls2 ws0">告诉我的学生:听完我的课,远达不到精通的目标,熟悉也达不到,掌握也达不到。那能</div><div class="t m0 xc h3 y31 ff1 fs1 fc0 sc1 ls2 ws0">达到什么目标?<span class="ff2 ls1">-----</span>领你们进入<span class="_ _13"> </span><span class="ff2">C<span class="_ _10"> </span></span>语言的大门。<span class="_ _14"></span>入门之后的造化如何在于你们自己。<span class="_ _14"></span>不过我</div><div class="t m0 xc h3 y32 ff1 fs1 fc0 sc1 ls2 ws0">可以告诉你们一条不是捷径的捷径:<span class="_ _12"></span>把一个键盘的<span class="_ _10"> </span><span class="ff2 ls20">F10<span class="_ _13"> </span></span>或<span class="_ _13"> </span><span class="ff2 ls21">F11<span class="_ _13"> </span></span>按坏,<span class="_ _12"></span>当然不能是垃圾键盘。</div><div class="t m0 xb h3 y33 ff1 fs1 fc0 sc1 ls2 ws0">往往讲到这里,<span class="_ _9"></span>学生眼里总是透露着疑虑。<span class="_ _9"></span><span class="ff2">C<span class="_ _10"> </span><span class="ff1">语言有这么难吗?我的回答是:<span class="_ _9"></span>不难。<span class="_ _12"></span>但</span></span></div><div class="t m0 xc h3 y34 ff1 fs1 fc0 sc1 ls2 ws0">你就是用不明白。学生说:以前大学老师讲<span class="_ _13"> </span><span class="ff2">C<span class="_ _10"> </span></span>语言,我学得很好。老师讲的都能听懂,考</div><div class="t m0 xc h4 y35 ff1 fs1 fc0 sc1 ls2 ws0">试也很好。平时练习感觉自己还不错,工作也很轻松找到了。我告诉学生:听明白,看明</div><div class="t m0 xc h4 y36 ff1 fs1 fc0 sc1 ls2 ws0">白不代表你懂了,你懂了不代表你会用了,你会用了不代表你能用明白,你能用明白不代</div><div class="t m0 xc h4 y37 ff1 fs1 fc0 sc1 ls2 ws0">表你真正懂了!什么时候表明你真正懂了呢?你站在我这来,把<span class="_ _c"></span>问题给下面的同学讲明白,</div><div class="t m0 xc h4 y38 ff1 fs1 fc0 sc1 ls2 ws0">学生都听明白了,说明你真正懂了。否则,你就没真正懂,这是检验懂没懂的唯一标准。</div><div class="t m0 xc h4 y39 ff1 fs1 fc0 sc1 ls2 ws0">冰山大家都没见过,但总听过或是电影里看过吧?如果你连《泰坦尼克》都没看过,那你</div><div class="t m0 xc h4 y3a ff1 fs1 fc0 sc1 ls2 ws0">也算个人物(开个玩笑)<span class="_ _11"></span>。<span class="_ _11"></span>《泰坦尼克》里的冰山给泰坦尼克造成了巨大的损失。你们都是</div><div class="t m0 xc h3 y3b ff1 fs1 fc0 sc1 ls2 ws0">理工科的,应该明白冰山在水面上的部分只是总个冰山的<span class="_ _13"> </span><span class="ff2 ls1f">1/8</span>。我现在就告诉你们,<span class="ff2">C<span class="_ _13"> </span></span>语言</div><div class="t m0 xc h4 y3c ff1 fs1 fc0 sc1 ls2 ws0">就是这座冰山。你们现在仅仅是摸到了水面上的部分,甚至根本不知道水面下的部分。我</div><div class="t m0 xc h3 y3d ff1 fs1 fc0 sc1 ls2 ws0">希望通过我的讲解,让你们摸到水面下的部分,让你们知道<span class="_ _13"> </span><span class="ff2">C<span class="_ _10"> </span></span>语言到底是什么样子。</div><div class="t m0 xb h3 y3e ff1 fs1 fc0 sc1 ls2 ws0">从现在开始,<span class="_ _12"></span>除非在特殊情况下,<span class="_ _12"></span>不允许用<span class="_ _10"> </span><span class="ff2 ls1f">pri<span class="_ _c"></span>ntf<span class="_ _13"> </span><span class="ff1 ls2">这个函数。<span class="_ _12"></span>为什么呢?很多学生写完</span></span></div><div class="t m0 xc h3 y3f ff1 fs1 fc0 sc1 ls2 ws0">代码,直接用<span class="_ _13"> </span><span class="ff2 ls1f">printf<span class="_ _15"> </span></span>打印出来,发现结果不对。然后就举手问我<span class="ff2">:</span>老师,我的结果为什么不</div><div class="t m0 xc h4 y40 ff1 fs1 fc0 sc1 ls2 ws0">对啊?连调试的意识都没有!大多数学生根本就不会调试,不会看变量的值,内存的值。</div><div class="t m0 xc h3 y41 ff1 fs1 fc0 sc1 ls2 ws0">只知道<span class="_ _13"> </span><span class="ff2 ls1f">printf<span class="_ _15"> </span></span>出来结果不对,<span class="_ _12"></span>却不知道为什么不对,<span class="_ _12"></span>怎么解决。<span class="_ _12"></span>这种情况还算好的。<span class="_ _12"></span>往往很</div><div class="t m0 xc h3 y42 ff1 fs1 fc0 sc1 ls2 ws0">多时候<span class="_ _13"> </span><span class="ff2 ls1f">printf<span class="_ _15"> </span></span>出来的结果是对的,<span class="_ _6"></span>然后呢,<span class="_ _d"></span>学生也理所当然的认为程序没有问题。<span class="_ _6"></span>是这样吗?</div><div class="t m0 xc h4 y43 ff1 fs1 fc0 sc1 ls2 ws0">往往不是,往后看,你能看到例子的。永远给我记住一点:结果对,并不代表程序真正没</div><div class="t m0 xc h3 y44 ff1 fs1 fc0 sc1 ls2 ws0">有问题。<span class="_ _c"></span>所以,<span class="_ _c"></span>以后尽量不要用<span class="_ _13"> </span><span class="ff2 ls1f">print<span class="_ _c"></span>f</span></div><div class="t m0 xd h4 y45 ff1 fs1 fc0 sc1 ls2 ws0">函数,<span class="_ _c"></span>要去看变量的值,<span class="_ _c"></span>内存的值。<span class="_ _c"></span>当然,<span class="_ _c"></span>在我们目</div><div class="t m0 xc h4 y46 ff1 fs1 fc0 sc1 ls2 ws0">前的编译器里,变量的值,内存的值对了就代表你程序没问题吗?也不是,往后,你也会</div><div class="t m0 xc h4 y47 ff1 fs1 fc0 sc1 ls2 ws0">看到例子的。</div><div class="t m0 xb h4 y48 ff1 fs1 fc0 sc1 ls2 ws0">这个时候呢,<span class="_ _f"></span>学生往往会莫名其妙。<span class="_ _f"></span>这个老师有问题吧。<span class="_ _f"></span>大学里我们老师都教我们怎么</div><div class="t m0 xc h3 y49 ff1 fs1 fc0 sc1 ls2 ws0">用<span class="_ _13"> </span><span class="ff2 ls1f">printf<span class="_ _c"></span><span class="ff1 ls2">,<span class="_ _14"></span>告诉我们要经常用<span class="_ _13"> </span><span class="ff2 ls1f">printf<span class="_ _c"></span><span class="ff1 ls2">。<span class="_ _f"></span>这也恰恰是大学教育失败的地方之一。<span class="_ _f"></span>很多大学老师根</span></span></span></span></div><div class="t m0 xc h3 y4a ff1 fs1 fc0 sc1 ls2 ws0">本就没真正用<span class="_ _15"> </span><span class="ff2">C<span class="_ _16"> </span></span>语言写过几行代码,<span class="_ _11"></span>更别说教学生调试代码了。<span class="_ _11"></span>不调试代码,<span class="_ _11"></span>不按<span class="_ _16"> </span><span class="ff2 ls20">F10<span class="_ _15"> </span></span>或<span class="ff2 ls21">F1<span class="_ _c"></span>1<span class="ff1 ls2">,</span></span></div><div class="t m0 xc h4 y4b ff1 fs1 fc0 sc1 ls2 ws0">水平永远也无法提上来,所以,要想学好一门编程语言,最好的办法就是多调试。你去一</div><div class="t m0 xc h3 y4c ff1 fs1 fc0 sc1 ls2 ws0">个软件公司转转,去看人家的键盘,如果发现键盘上的<span class="_ _13"> </span><span class="ff2 ls20">F10<span class="_ _13"> </span></span>或<span class="_ _10"> </span><span class="ff2 ls21">F11<span class="_ _15"> </span></span>铮亮铮亮,毫无疑问,</div><div class="t m0 xc h4 y4d ff1 fs1 fc0 sc1 ls2 ws0">此机的主人曾经或现在是开发人员<span class="_ _17"></span>(这里仅指写代码的,<span class="_ _17"></span>不上升到架构设计类的开发人员)<span class="_ _11"></span>,</div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>
<div id="pf5" class="pf w0 h0" data-page-no="5"><div class="pc pc5 w0 h0"><img class="bi x0 y0 w1 h1" alt="" src="https://static.pudn.com/prod/directory_preview_static/62feebd4f97302478e7307ce/bg5.jpg"><div class="t m0 xc h4 y4e ff1 fs1 fc0 sc1 ls2 ws0">否则,必是非开发人员。</div><div class="t m0 xb h4 y4f ff1 fs1 fc0 sc1 ls2 ws0">非常有必要申明,<span class="_ _f"></span>本人并非什么学者或是专家,<span class="_ _f"></span>但本人是数学系毕业,<span class="_ _f"></span>所以对理论方面</div><div class="t m0 xc h4 y50 ff1 fs1 fc0 sc1 ls2 ws0">比较擅长。讲解的时候会举很多例子来尽量使学生明白这个知识点,至于这些例子是否恰</div><div class="t m0 xc h4 y51 ff1 fs1 fc0 sc1 ls2 ws0">当则是见仁见智的问题了。但是一条,长期的数学训练使得本人思维比较严谨,讲解一些</div><div class="t m0 xc h4 y52 ff1 fs1 fc0 sc1 ls2 ws0">知识点尤其是一些概念性原理性的东西时会抠的很细、很严,这一点相信读者会体会得到</div><div class="t m0 xc h3 y53 ff1 fs1 fc0 sc1 ls2 ws0">的。本书是我平时讲解<span class="_ _13"> </span><span class="ff2">C<span class="_ _10"> </span></span>语言的一些心得和经验,其中有很多我个人的见解或看法。经过</div><div class="t m0 xc h4 y54 ff1 fs1 fc0 sc1 ls22 ws0">多期培训班的实践,发现这样讲解得比较透彻,学生听得明白。很多学生听完课后告诉我:</div><div class="t m0 xc h4 y55 ff1 fs1 fc0 sc1 ls2 ws0">我有生以来听课从来都没有听得这么透彻,这么明白过。也有业余班的学生甚至辞掉本职</div><div class="t m0 xc h4 y56 ff1 fs1 fc0 sc1 ls2 ws0">工作来听我的课的。</div><div class="t m0 xb h3 y57 ff1 fs1 fc0 sc1 ls2 ws0">当然,关于<span class="_ _13"> </span><span class="ff2">C<span class="_ _10"> </span></span>语言的这么多经验和心得的积累并非我一人之力。借用一句名言:我只</div><div class="t m0 xc h3 y58 ff1 fs1 fc0 sc1 ls2 ws0">不过是站在巨人的肩膀上而已。给学生做培训的时候我参考得比较多的书有:<span class="ff2 ls23">Kernighan<span class="_ _10"> </span>&</span></div><div class="t m0 xc h3 y59 ff2 fs1 fc0 sc1 ls24 ws0">Ritchie<span class="_ _13"> </span><span class="ff1 ls25">的《</span><span class="ls26">The<span class="_ _13"> </span>C<span class="_ _13"> </span>Programming<span class="_ _13"> </span>Language<span class="ff1 ls2">》<span class="_ _11"></span>;<span class="_ _12"></span><span class="ff2 ls27">Linden<span class="_ _13"> </span><span class="ff1 ls25">的《<span class="_ _1"></span></span><span class="ls28">Expert<span class="_ _13"> </span>C<span class="_ _10"> </span>Program<span class="_ _c"></span>ming<span class="ff1 ls2">》<span class="_ _11"></span>;<span class="_ _18"> </span><span class="ff2 ls29">Andrew<span class="_ _15"> </span>&</span></span></span></span></span></span></div><div class="t m0 xc h3 y5a ff2 fs1 fc0 sc1 ls2a ws0">Koening<span class="ff1 ls2">《</span>C<span class="_ _13"> </span>Traps<span class="_ _15"> </span>a<span class="_ _1"></span>nd<span class="_ _13"> </span>Pitf<span class="_ _1"></span>alls<span class="ff1 ls2">》<span class="_ _11"></span>;<span class="_"> </span><span class="ff2 ls2b">Steve<span class="_ _15"> </span>M<span class="_"> </span>aguire<span class="_ _10"> </span></span>的《<span class="ff2 ls28">W<span class="_ _c"></span>rite<span class="_ _15"> </span>Clean<span class="_ _13"> </span>Code<span class="ff1 ls2">》<span class="_ _11"></span>;<span class="ff2 ls1b">Steve<span class="_ _13"> </span>McConnell<span class="_ _13"> </span></span>的</span></span></span></div><div class="t m0 xc h3 y5b ff1 fs1 fc0 sc1 ls2 ws0">《<span class="ff2 ls2c">Code<span class="_ _15"> </span>Complete.<span class="_ _13"> </span>Second<span class="_ _13"> </span>Edition<span class="_ _c"></span><span class="ff1 ls2">》<span class="_ _19"></span>;林锐的《高质量<span class="_ _13"> </span><span class="ff2 ls2d">C++/C<span class="_ _13"> </span></span>编程指南》<span class="_ _11"></span>。这些书都是经典之</span></span></div><div class="t m0 xc h4 y5c ff1 fs1 fc0 sc1 ls2 ws0">作,但却都有着各自的缺陷。读者往往需要同时阅读这些书才能深刻的掌握某一知识点。</div><div class="t m0 xc h4 y5d ff1 fs1 fc0 sc1 ls2 ws0">我的讲课的试图时候融各家之长,再加上我个人的见解传授给学生。还好,学生反映还可</div><div class="t m0 xc h4 y5e ff1 fs1 fc0 sc1 ls2 ws0">以,至少还没有出乱子。这些书饱含着作者的智慧,每读一遍都有不同的收获,我希望读</div><div class="t m0 xc h4 y5f ff1 fs1 fc0 sc1 ls2 ws0">者能读上十遍。另外,在编写本书时也参考了网上一些无名高手的文章,这些高手的文章</div><div class="t m0 xc h3 y60 ff1 fs1 fc0 sc1 ls2 ws0">见解深刻,使我受益匪浅。这里要感谢这些大师们,如果不是他们,肯怕我的<span class="_ _13"> </span><span class="ff2">C<span class="_ _10"> </span></span>语言的水</div><div class="t m0 xc h4 y61 ff1 fs1 fc0 sc1 ls2 ws0">平也仅仅是入门而已。</div><div class="t m0 xb h3 y62 ff1 fs1 fc0 sc1 ls2 ws0">学习<span class="_ _13"> </span><span class="ff2">C<span class="_ _10"> </span></span>语言,这几本书如果真正啃透了,水平不会差到哪。与其说本书是我授课的经</div><div class="t m0 xc h3 y63 ff1 fs1 fc0 sc1 ls2 ws0">验与心得,不如说本书是我对这些大师们智慧的解读。本书并不是从头到尾讲解<span class="_ _13"> </span><span class="ff2">C<span class="_ _10"> </span></span>语言的</div><div class="t m0 xc h3 y64 ff1 fs1 fc0 sc1 ls2 ws0">基础知识,所以,本书并不适用于<span class="_ _13"> </span><span class="ff2">C<span class="_ _10"> </span></span>语言零基础的人。本书的知识要比一般的<span class="_ _13"> </span><span class="ff2">C<span class="_ _13"> </span></span>语言书说</div><div class="t m0 xc h4 y65 ff1 fs1 fc0 sc1 ls2 ws0">讲的深的多,其中有很多问题是各大公司的面试或笔试题。所以本书的读者应该是中国广</div><div class="t m0 xc h3 y66 ff1 fs1 fc0 sc1 ls2 ws0">大的计算机系的学生和初级程序员。如果本书上面的问题能真正明白<span class="_ _13"> </span><span class="ff2 ls1f">80%</span>,作为一个应届</div><div class="t m0 xc h4 y67 ff1 fs1 fc0 sc1 ls2 ws0">毕业生,肯怕没有一家大公司会拒绝你。当然,书内很多知识也值得计算机教师或是中高</div><div class="t m0 xc h4 y68 ff1 fs1 fc0 sc1 ls2 ws0">级程序员参考。尤其书内的一些例子或比方,如果能被广大教师用于课堂,我想对学生来</div><div class="t m0 xc h4 y69 ff1 fs1 fc0 sc1 ls2 ws0">说是件非常好的事情。有人说电影是一门遗憾的艺术,因为在编辑完成之后总能或多或少</div><div class="t m0 xc h4 y6a ff1 fs1 fc0 sc1 ls2 ws0">的发现一些本来可以做得更好的缺陷。讲课同样也如此,每次讲完课之后总能发现自己某</div><div class="t m0 xc h4 y6b ff1 fs1 fc0 sc1 ls2 ws0">些地方或是没有讲到,或是没能讲透彻或是忘了举一个轻浅的例子等等。整理本书的过程</div><div class="t m0 xc h4 y6c ff1 fs1 fc0 sc1 ls2 ws0">也是,为了尽量精炼,总是犹豫一些东西的去留。限于作者水平,书中难免有些遗漏甚至</div><div class="t m0 xc h3 y6d ff1 fs1 fc0 sc1 ls2 ws0">错误,希望各位读者能予指教。作者<span class="_ _13"> </span><span class="ff2 ls2e">Mai<span class="_ _1"></span>l:dissec<span class="_ _1"></span>tion_c@1<span class="_ _1"></span>63.com.</span></div><div class="t m0 xe h4 y6e ff1 fs1 fc0 sc1 ls2 ws0">陈正冲</div><div class="t m0 xe h3 y6f ff2 fs1 fc0 sc1 ls2f ws0">2008<span class="_ _13"> </span><span class="ff1 ls2">年<span class="_ _13"> </span><span class="ff2">6<span class="_ _13"> </span></span>月<span class="_ _10"> </span></span><span class="ls1f">23<span class="_ _13"> </span><span class="ff1 ls2">日</span></span></div></div><div class="pi" data-data='{"ctm":[1.611639,0.000000,0.000000,1.611639,0.000000,0.000000]}'></div></div>