C专家编程 清晰 (有书签索引)
C专家编程 清晰 (有书签索引)C专家编程 清晰 (有书签索引)内容提要《C专家编程》展示了最优秀的C程序员所使用的编码技巧,并专门开梓了一章对C++的基础知识进行了介绍。书中C的历史、语言特性、声明、数组、指针、链接、运行时、内存以及如何进一步学习C++等问题进行了细致的讲解和深入的分析。全书撷取几十个实例进行讲解,对C程序员具有非常高的实用价值本书可以帮助有一定经验的C程序员成为C编程方面的专家,对于具备相当的C语言基础的程序员,本书可以帮助他们站在C的高度了解和学习C++。序最近,我逛了一家书店,当我看到大量枯燥乏味的C和C++书籍时,心情格外沮丧。我发现极少有作者想向读者传达这样个信念:任何人都叮以享受编程。饣长而乏味的阅读过稈中,所有的奇妙和乐趣都烟消云散了。如果你硬着头皮把它啃亢,或许会有长进。但编程本米不该是这个样子的呀!编稈应该是一项精妙绝伦、充满生机、富有挑战的活动,而讲述编程的书籍也应时时迸射出激情的火化。本书也是教学性质的书籍,但它希望重新把快乐融入编程之中。如果本书不合你的口味,请扛它放冋到书架上,但务必放到更显眼的位置上,这里先谢过了。好,听∫这个开场白,你不免有所疑问:关于C语言编程的书可以说是不胜枚举,那么这本书又有什么独到之处昵?《C专家编程》应该是每位程序员的第二本学习C语言的书。这里所提到的绝大多数教程、提示和技巧都是无法在其他书上找到的,即使有的话,它们通常也是作为心得体会手记录在手册的书页空白处或旧打印纸的背甭。作者以及Sun公司编详器和操作系统小组的同事们在多年C语言编程实践中,积累了大量的知识和经验。书中讲述了许多有趣的¢语言故事和轶闻,诸如连接到因特网上的自动售货机、太空软件中存在的问题,以及个C语言的缺陷怎样使整个AT&T长途电话网终瘫痪等。本书的最后一章是C+语言的轻松教程,帮助你精通这门日益流行的从C语言演化而来的语言。本书讲述的是应用于PC和UNX系统上的ANS标准C语言。对C语言中与UNX平台复杂的哽件结构(如虚拟内存等)相关的特性作了详细描述。对JPC的内存模型和 Intel8086系列对C语言产生影响的部分也作了全面介绍。C语言基础相当扎实的人很快就会发现书中充满了很多程序员可能需要多年实践才能领会的技巧、提示和捷径。它覆盖了许多令C程序员困惑的主题:o typedef struct bar int bar;}bar約真正意思是什么?●我怎样把些大小不同的多维数组传递到问一个函数中?●为什么 exten char*p:同另一个文件的 char pl100小不能够匹配?●什么是总线错误( bus error)?什么是段违规( segmentation violation?●char*o0]和char(*foo)]有何不同?如果你对这些问题不是很有把握,很想知道C语言专家是如何处理它们的,那么请继续C专家编程岚读!即使你对这些问题巴经了如指掌,对C语言的其他细节也是耳熟能详,那么也请读本书,继续允实你的知识。如果觉得不好意思,就告诉书店职员“我是为朋友买书。”Peter Van Der linden于加州硅谷前C代码。C代码运行。运行码运行…,请Barbary lir所有的C程序都做同一件事,观察一个字符,然后啥也不干。Peter weinberger你是否注意到市面上字有大量的C诂言编程书籍,它们的书名具有一定的启示性,如:C Traps and pitfall(本书中文版《C陷阱与缺陷》已由人民邮电出版社出版, The c puzzle book,Obfuscated C and Other Mysteries,而其他的编程语言好像没有这类书。这里有一个很充分的理由!C语言编程是一项技竺,需要多年历练才能达到较为完善的境界。一个头脑敏捷的人很快就能学会C语言中基础的东西。但要品味出C语言的细微之处,并通过大量编写各种不同程序成为C语言专家,则耗时甚巨。打个比方说,这是在巴黎点一杯咖啡与在地铁里告诉土生士长的巴黎人该在哪里卜车之间的差别。本书是一本关于 ANSI C编程语言的高级读本它适用于已经编写过C程序的人,以及那些想迅速获取一些专家观点和技巧的人编程专家在多年的实践中建立了自己的技术工具箱,里面是形形色色的习惯用法、代码片段和灵活掌握的技巧。他们站在其他更冇经验的同事的肩膀上,或是直接领悟他们的代码,戌是在维护其他人的代码吋聆听他们的教诲,随着时间的推移,遂步形成了这些东西。另外种成为C编程高手的途径是自省,在认识错误的过程中进步。几乎每个C语言编程新手都曾犯过下面这样的书写错误正确的应该是fC专家编程且有过这样的经历,这种痛苦的错误(祎要进行比较时误用∫赋值符号)一般不公冉犯。有些程序员甚至养成一种习惯,在比较式中先写常数,如:if(3==i。,这样,如果不小心误用了赋值符号,编讦器就会发出"“ attempted assignment to literal(试图向常数赋值)的错误信息。虽然当你比较两个变量时,这种技巧起不了作用。但是,积少成多,如果你直留心这些小技巧,迟早会对你有所帮助的价值2000)美元的Bug993年春天,在 Suso的操作系统开发小组里,我们接到了一个“一级优先”的Bug报伫,是一个关J异步IO库的问题。如果这个Bug不解决,将会使一枓价值2000)美元的硬件产品生意告吹,因为对方需要使用这个厍的功能。所以,我们顶着重压寻找这个Bug经过几次紧张的调试,问题被圈定在下面这条话句上这是个打字错误,它的原意是条赋值语句。程序员的手指放在“=”键上,不小心多按下这条语句成了将x与2进行比较,比较结果是true或者 false,然后丢弃这个比较结果C语言的表达能力也实在是强,编译器对于“求一个表达式的值,但不使用该值”这样的语句竟然也能接受,并上不发出任何警告,只是简单地把返回结果丢弃。我们不知道是该为及时找到这个间题的好运气而庆幸,还是应该为这样一个常见的打字错误可能付出高昂的代价响痛心疾首。有些版本釣长整数程序已经能够检测到这类问题,但人们很容易忽视这些有用的工具本书收集了其他许多有益的故事。它记录了许多经验丰富的程序员的智慧,避免读者再走弯路。当你来到一个看上去很熟的地方,却发现许多角落依然陌生,本书就像是个细心的向导,帮助你探索这些角落。本书对一些主要话题如卢明、数组/指针等作了深入的讨论同时提供了许多提示和记忆方法。本书从头到尾都采用了 ANSI C的术语,在必要时我会用日常用语来诠释。编程挑战小启发样例框前言我们设置了“编程挑戊”这个小栏目,像这样以框的形式出现框口会列出一些对你所编写的程序的建议另外,我们还设置了“小启发”这个栏目、也是以框的形式出现的小启发”里出现的是在实际工作中所产生一些想法、经验和指导方针。你可以在编程中应用它们。当然,如果你觉得你已经有了更好的指导原则,也完全可以不理会它们约定我们所采用的一个约定是用蔬莱和水果的名字来代表变量的名字(当然只适川于小型程序片段,现实中的程不可如此):nar cear[401idoule peachg13;Long melon001这样就很容易区分哪些是关键子,哪些是程序员所提供的变量名。有些人或许会说,你不能拿苹果和桔子作比较。但为什么不行呢?它们都是在树上生长、头大小、圆圆的可食之物。旦你习惯了这种用法,你就会发现它很有用。另外还有个约定,有时我们会重复某个要点,以示强调。和精关食谱一样,《C专家编程》准备了许多可口的东西,以实:例的样式奉献给读者。好章都被分成儿个彼此相关而乂独立的小节。无论是从头到尾认貞阅读,还是随意戳开一章选一个单独的主题细细品味,都是相当容易的。许多技术细节都蕴藏于C语言在实际编程中的些真灾故事里。幽默对于学习新东西是相当重要的,所以我在每一章都以一个“轻松一下”的小栏日结尾。这个杓目包含了一个有趣的C语言故事,或是一段软件轶闻,让读者在学习的过程中轻松一下读者可以把本书当作语言编程的思路集锦,戌是C诰言提小和习惯用法的集合,也可以从经验丰富的编译器作孑那里汲取营养,更轻松地学习 ANSI C。总之,它把所有的信息、提小和指导方针都放在一个地方,让你慢慢品味。所以,请赶紧翻开书,拿出笔,舒舒服服在坐在电脑前,开始快乐之旅吧!轻松一下—优化文件系统偶尔,在C和UNX中,有些方面是令人感觉柑当轻松的。只要出发点合理,什么样的奇思妙想都不为过。 BM/Motorola/Ap! le powerpc架构具有一种EIEI.O指令1,代表“ Enforce叫能是山个名叫 McDonald的老农设计的C专家编程In-Order execution of i/O”(在ⅠO中实行按顺序执行的方针)。与这种思想相类似,在UNIX中也有一条称作 tunels的命令,高级系统管理员用它修改文件系统的动态参数,并优化愜盘中文件块的布局和其他的 Berkeley命令一样,在早期的 tuners在线手册上,也是以…个标题为“Bugs的小节来结尾。内容如下:Bugs.这个程序本来应该在安装好的( mounted)和活动的文件系统上运行,但事实上并非如此。因为超级块( superblock)并不是保持在高速缓冲区中,所以该程序只有当它运行在未安装好的( dismounted)文件系统中时才有效。如果运行于根文件系统,系统必须重新启动。你可以优化一个文件系统,但不能优化一条鱼史有甚者,在文字处理器的源文件中有一条关于它的注释,警告任何人不得忽视上面这段话!内容如下如果忽视这段话,你就等着烦吧。一个UNIⅩ里的怪物会不断地纠缠你,直到你受不了为止当SUN和其他一些公司转到SV4UNX平台时,我们就看不到这条警训了。在SVr4的手册中没有了“Bugs”这节,而是改名为“注意”(会不会误导大家?)。“优化一条鱼”这样的妙语也不见了。作出这个修改的人现在一定在受UNⅨX里面怿物的纠缠,自作自受!限网xd如…阳r增扣出·加编程挑战计算机日期关于tine_t,什么时候它会到达尽头,重新回到开始呢?写一个程序,找出答案。1.查看一下 time t的定义,它位于文件/ aser/include/time h中2.编写代码,在一个类型为imet的变量中存放 time t的最大值,然后把它传递给cime(函数,转换成ASCH字符串并打印出来。注意cine(O函数同C语言并没有任何关系,它只表示“转换时间”。如果程序设计者去掉了程序的注释,那么多少年以后,他不得不担心该程序会在UNIX平台上溢出。请修改程序,找出答案1加州大学伯克利分校,UNX系统的许多版本都是在那里设计的。—译芹汴前言1.调用 timeo获得当前的时间。2.调用 difftime(O获得当前时间和 time t所能表示的最大时间值之间的差值(以秒计算)3.把这个值格式化为年、月、周、日、小时、分钟的形式,并打印出来它是不是比一般人的寿命还要长?"二hTMT解决方案计算机日期这个练习的结果在不同的PC和UNⅸX系统上有所差异,而且它依赖于 time t的存储形式。在Sun的系统中,timt是long的 typedef形式。我们所尝试的第一个解决方策如下:include #includes iine hn()time_t biggest =0x7FFFFFFF:printf("biggest =s n", asctime(gmt ime(&biggest)));return o它给出了如下的结果:
用户评论
资料挺清晰的,还不错
谢谢根香,挺好的 还有书签
挺好的,挺清晰,比我之前下载的版本强多了
简体中文扫描版的单一pdf文件,有书签,清晰度还不可以,在目前能找到的本书电子版中算不错的了,谢谢分享