C程序设计语言

出版时间:2001-3  出版社:机械工业出版社  作者:Brian W.Kernighan  
Tag标签:无  

内容概要

本书是由C语言研制者编写的一部介

书籍目录

中文版序译者序序第1版

图书封面

图书标签Tags

评论、评分、阅读与下载


    C程序设计语言 PDF格式下载


用户评论 (总计26条)

 
 

  •     记得沈向洋(微软杰出工程师)在《编程之美》中说过:它经常出的一道面试题是展示一段自己觉得写过的最好的程序。一段好的程序是一个人编码功底的最好体现,类似,一本由优美的程序组成的教程是教授这门语言的最好方式。在我的阅读经历中有三本书给了我这样的感觉:《The C programming language》《Classic Shell Scripting》《effective c++》。
      
      TCPL这本书给了我很多思考感悟。简单的说,这本书用C语言讲解了unix接口、unix编程文化、编译原理、数据结构与算法。每说明一个语法特性,都用了一个短小精悍的程序来展示Unix-style的编程方法、编程风格。在第6章关于BST的使用(第121页)让我印象很深刻。它先提出一个应用的场景(统计各个单词的出现次数),然后设计相应的数据结构(BST树),再写算法解决该问题。在第8章用C语言实现了三个实用程序:C库函数fopen,getc的实现,目录列表(ls的简化)的实现,内存分配器malloc/free。其中内存分配器的实现有点意思,它用了空闲块链表管理空间存储空间,当申请内存时,malloc会扫描空闲块链表,直到找到一个足够大的空闲块(即循环首次适应算法)。这段代码是最精简的malloc/free实现,如果对内存管理(或者想写一个小型的内存分配器)感兴趣,也可以看看tcmalloc,jemalloc,dl malloc,ptmalloc(Glibc中的默认分配器)实现。
      
      C语言不像C#、Java那样的高层语言,它没有强大、丰富的类库,所以自己学习研究轮子、造轮子是修炼C语言的必经之路。我觉得真正的C语言高手应该实现过一些实用、高效的基础库,或者基于C的infrastructue,写过编译器,掌握linux汇编,理解C程序编译、链接、加载的整个过程。
      
      C语言提供的直接操纵机器的抽象,但使用时也会有一些陷阱。比如字符数组的处理,运算时的数据类型提升。推荐看看《C陷阱和缺陷》《C专家编程》。
      
      学好C语言,必须理解计算机的运作原理。推荐两本好书:《深入理解计算机系统》《程序自我修养-链接、装载、库》。
      
      TCPL是一本值得珍藏的好书,值得阅读多遍。小心仔细阅读,模仿其中的代码风格、体会其中的解决思路,做习题,多实践,会收获很多。
  •     说几点吧:
      
      1. 读下来毫不费力,全程都是享受。语言简练,词句清晰。
      
      2. 例子超级经典!总会有看到作者的代码然后觉得太巧妙了、太厉害了、太老道了!这种大师杰作,每个代码细节都让人感慨。
      
      3. 一定要动手练习。老生常谈,看和写完全是两码事,但看这本书的代码,有种迫不及待想练习一下的期待,就好像看到一本武林秘籍,光读还不够过瘾,迫切地想找个安静的地方揣摩练习一番。
      
      4. 再抄写一下作者简介,以表崇拜:
      Brian W. Kernighan: 贝尔实验室计算科学研究中心高级研究人员,著名计算机科学家。他参加了UNIX系统、C语言、AWK语言和许多其他系统的开发,同时出版了很多在计算机领域颇具影响力的巨著:<<The Element of Programming Style>> <<The Practice of Programming>> <<The Unix Environment Programming>> <<The AWK Language>> <<Software Tools>>
      Dennis M. Ritchie: 1967年加入贝尔实验室,他和Ken L. Thompson两人共同设计并实现的C语言改变了程序设计语言的发展轨迹,是程序设计语言发展过程中的一个重要里程碑。与此同时,他们两人还设计并实现了UNIX操作系统。1983年,获得了计算机界最高荣誉--图灵奖。
      
      5. 我在YY所有的技术书都这样就好了XD
  •     作者不愧是C语言和UNIX操作系统的设计者!K&RC篇幅虽小,却很是精炼!这学期抽空把K&R C的英文原版读了一遍。当然了光学不练假把式!于是我把我的做的习题放到的Google Code上托管。绝大多数习题都是我自己写的,并且是按照讲解进度做得,并没有使用任何超前的内容;一少部分对题意理解错误的,我根据《The C Answer Book》进行了修订。由于时间仓促,疏漏在所难免,所以就想到了发动群众的力量。目前我已经将习题答案更新到了第五单元(后面的习题就比较少了)。希望大家能一起来把这个项目做好,C语言的新手也可以借此提高自己对C语言的理解。
      
      Google Code项目托管地址:
      http://code.google.com/p/kr-answers/
      
      如果有哪个同学想申请做committer的,请给我发邮件:
      kangmignxuan#gmail.com
  •     这本书,推荐读英文版的,不算附录,也就是190页。绝对可以做你的第一本英文技术书。
      
      我看的第一本C语言的书不是这一本,不过这一本书毫无疑问是最好的一本。当之无愧的C语言圣经。
      
      书后的习题,最好全部自己做一遍,难度有点大。尽量自己编出来,等你可以不看书上和网上的代码,完全自己就能写出来的时候,你的基础绝对足够了。不用再去找其他的C语言的书来看了。
      
      这个时候你要做的,是去做ACM上的题,学习《算法导论》了。
      
      恭喜,level up!
  •     以前读过几次这本书,每次阅读都是一次享受,短短200页就能将c介绍的如此详细,语言精练,事例精巧,感觉多一份则邋遢,少一分则缺憾,在严谨之中我们可以感受到大师的浪漫,确实是圣经。
      从另一方面来说,这本书并不适合学习c的初学者使用,内容如此简练,没有一定的基本功的话,读完可能会有索然无味的感觉。
  •      其实看完这本书已经有3个月了吧,整体感觉这本书真是非常不错,里面关于编程思想的讲解,很多是不经意之间流露的,很多编程习惯和经常出现的错误,作者都在书里有所强调,读完之后回想一下,真是感概,这样一本不到200页的书,竟然可以把c语言的那么多易错内容和重要思想讲到,感觉很是赞叹,特别推荐编程的人读一下。
       虽然这本书前言里面貌似是说(记不太清),可以用来入门,但是感觉用这本入门还是有些难,推荐使用谭浩强老师那本,感觉更好入门一些,虽说那本书现在经常遭人唾弃,本人在读完了K&R的这本《c程序设计语言》之后,也感觉谭浩强老师的那本书写的很一般,但是他的那本书我感觉对于没有编程基础或者或编程基础及其薄弱的人来说,还是非常好的。
       但是对于有过一定编程经验的人,还是建议读一下这本书,里面关于编程易错的问题以及一些编程思想和细节的讲述很经典,比较容易开拓人的思路。本人准备过段时间还是要读一遍的。
  •     书叫C Bible一点也不夸张。书写的很精炼,但是内容却讲的很明白,比谭某某的大块头书强多了。但是个人觉得还是应该有些C基础的人看着会收获更大,新手恐怕会有难度。书中没有一味的说教,没有说你要记住这个语法,那个语法,而是通过写实用的函数来指导大家怎样用C语言。同时感觉那个时代的作品真的很踏实。
  •     言简意赅,精炼美妙!我是通过读这本书,才真正体会到新东方三驾马车之一的王强说过的半句话:“做人要做第一流的人,读书要读第一流的书”,读书不要贪多,只读经典,耐心体会,慢慢琢磨,你才能吸收的多,才能在无形之中发现内功在不断积累,看看王强同学当年由德语专业转到计算机专业,之前没数学基础,且6年都没摸过数学的毛,计算机更是一窍不通,但凭借着英语底子以及坚韧不拔意志以及“只读经典”的做法,这哥们硬是从纽约州立大学计算机专业毕业了,还进了很多美国本土计算机专业的大牛都进不了的贝尔实验室!!
      在准备找工作期间,我又重读了一遍,意犹未尽之余,仍然忍不住点赞!我想,把程序写的言简意赅,其实就是写出了一首好诗,诗能流传千古,写诗的方式能被无数人膜拜并效仿,这本书的作者做到了。
      PS:初学编程或者c的同学,还是不建议看这本书,适合有一定基础的人。
  •     其实,我已经不记得自己是第几次重读这本《The C Programming Language》了,每次读都不禁感叹,技术书竟然也可以写得如此精炼,完美,俨然是一副美丽的画卷。能从此书进入浪漫而严谨的黑客世界不能不说是一种荣幸。因此这本书一直我向初学者们推荐的首选书籍。
      
      写过技术文章的人都知道,技术类教程最困难的地方就是在细节严谨性与教学引导性之间找到合适的平衡点。如果没有教学引导性,你就很容易写出一部字典,对于初学者来说缺乏轻重缓急、循序渐进的过程,就会不得其门而入。而缺乏足够的、可以立刻上机测试的代码实例,就会觉得兴趣黯然,学习过程形同嚼蜡。这就需要作者有丰富的教学经验以及带队经验。有了前者,我们就能熟悉教学心理,知道先教什么,后教什么,之间如何承前启后,将人一步一步引入到这么技术的运用中来。而有了实际带队经验我们就会知道新手在实际实践中会遇到那些情况,并且能准确的预料到学生在运行什么代码时会遇到什么问题,而在这种情况下往往是一点就通,不用长篇大论,事倍功半。
      
      而只懂如何做一个老师是不够的,计算机语言毕竟是一门科学语言,严谨的细节感是必不可少的。这就要求作者自己得是相关领域中的专家,至少得对这门学科的标准,设计原则了如指掌。这样才能言之有物,而不是靠类似++i+i++这样哗众取宠,而又在细节上似是而非的东西来滥竽充数,却对真正需要浓墨重彩的结构体,标准库部分语焉不详,敷衍了事。
      
      同时做到以上两个方面并不容易,但这本书不但做到了,而且做得堪称典范。作为C语言和UNIX操作系统的缔造者,本书的作者K&R对于C语言的标准及其运用自然有着无可争辩的权威。而他们从打印Hello World!开始的教学方式几乎成为了所有编程教学的样板。而即便如此,至今也没有几本书能像他们这样,做到如此的有趣、精炼、严谨(这本书的主体部分还不足两百页,想想那些比C简单得多的语言,动不动就是几百页大部头。),令人百看不厌。
      
  •     本书重点讲解C语言而非程序设计,但是作者在程序设计方面的深厚功力仿佛无心插柳得一般影响了几代计算机工作者。这本书的特点是语言的简洁和示例程序的精巧,充满了作者实践中的智慧,是一本不可多得的好书。
  •     想想很是惭愧,计科毕业快四年了,才稍稍读懂这本书。
      
      读本书,你得有一些unix like系统的操作经验。你要知道文件描述符,输入输出流,重定向,管道以及”anything is file“等在unix世界里这些归为常识的概念;这些离我们这些在windows的世界里长大的一辈太远;说到底C原生于unix。
      
      然后谈这门语言。
      常量,变量,变量作用域,函数,指针,流程控制以及预处理。
      本书是一个精炼的C语言介绍手册,很多深厚的技术细节没有介绍,你得有其他的书相左,比如《代码大全》,《C和指针》。
      
      所谓的编程语言就是进入机器,控制机器的一把钥匙,术语称作接口;它规定了如何解释机器的存储空间,如何利用机器的存储空间,如何控制机器的计算过程;于是,我们得以让这毫无生命的机器变幻出绚丽多姿的一场戏法。
      
      恩,推荐一下。
      
      
      
      
  •     英文原版的很给力,简洁,流程但又深度!
      
      记得C语言的作者Ritchie说过,他自己从来就不需要学习C语言,其实这是一个厚积薄发的过程,熟能生巧的过程。
      
      现在还没没仔细做exercise,又买了中文版的和习题解答,在慢慢修炼 吧!
      
      1W Hours,Keep going!
  •      刚看完c primer plus的时候便兴冲冲的看着本书,结果看到70多页的时候看不下去了,只有一个感觉:不明觉厉。很大一部分原因是后面的题没做,结果越看越晕。
       后来看了c缺陷跟c专家编程(简直是TCPL的解析版),回头再来看这本书,发现看起来爽多了,书里面的题能做的也都做了。
       感觉第八章感觉才是本书的高潮,可惜小生功力太浅,看的真是费劲,还没看懂。。。可能这本书就是需要看好几遍吧。。。
       另外补充下,书里的代码部分不要直接开始看,先看下其功能描述,自己试着写一个版本,然后跟书里的代码比较一下,看差距在哪里。这样感觉才算是没白看。后面的习题也是能做的就做,关键是要多写代码。
       接下来挑战另一本神书---SICP。
  •      真的是经典啊!
       用了大概一周的时间读完了这本圣书,可惜没有动手做练习题。一开始读感觉很基础很很简洁,惊喜得发现我竟然都能读懂,应该是第一次完全地读一本英文教材。读着读着越觉得流畅,那种渗透在字里行间的简洁严谨让人欲罢不能。真的是没有一句废话!到后几章,偶尔眼前一亮,遇到了几处以前从来没有见过的知识点,比如联合体的初始化只能在第一个元素上进行。读完最后两章更是觉得收获颇多,领悟了C整体机制上的一些问题。
      
  •     历时2个多月,把The C Programming Language读完、习题做完。
      
      屡屡感叹,前人着实太nb,难以想象,在那个信息闭塞的年代,二叉树排序,递归下降这些思路是如何想出来的。又或是对于fopen这样的文件处理函数的实现,沿用至今未曾过时。
      
      走进书店,计算机类充斥着《20天速成XXX》、《10分钟学会XXX》、《手把手教你XXX》这样的书。
      
      我想说的是,Coding真的是个很酷很棒的事情,如果你热衷于此,读这本书吧,里面的每一道习题都值得细细品味。通过这本书,你可以实现大部分标准库的函数,而且还顺手写了head,tail,grep,sort这些*nix的实用命令,如果你乐意,你甚至可以尝试写一个C语言的语法分析器。这一切仅仅是上一次用C语言还是学生的我所做到的。
      
      春节期间看到比尔盖茨在Reddit的采访
      
      有人问道:Do you still code ?, if so which language ? :),
      盖茨答:Not as much as I would like to. I write some C, C# and some Basic. I am surprised new languages have not made more progress in simplifying programming. It would be great if most high school kids were exposed to programming...
      
      真的没想到答案会是“还在写”,本以为他会说“哎,把写代码这种事情留给年轻人干吧”。。。我深刻地想了下,貌似世间也没什么事是对他有吸引力的了: P,那么剩下的就只有热情和兴趣了。
      
      最后,推荐这本书给所有热爱编程的同学
      
      ps:如果有能力的话尝试看英文原版吧,有些翻译中文很难做到准确,比如declare, declarator, declaration三个词的区别;比如type-specifier, type-specifiers
      
  •     精读经典,重新开始:《C程序设计语言》句读
      
      康德如此闻名,没有人敢慎重地说他写得都是些什么玩意,根本看不懂。但是,一直以来,很多人都提到,康德的著作太难读了,这抱怨还是针对汉译的。《纯粹理性批判》中文版,看着跟德文似的。所幸,邓晓芒先生著有《<纯粹理性批判>句读》,逐句翻译和扩展。这让我满怀希望,也许经过努力,总有一天能够明白。
      
      类似受到推崇和抱怨的,还有《C程序设计语言》一书,C和UNIX操作系统的发明人 K&R 两位先生的著作,是最优秀的C语言教科书。我在本科的时候幸运地从学校图书馆借到过这本,薄薄的小册子,讲解清楚明白。
      
      虽然我后来又读了很多书,它仍是对我影响最大的和最优秀的书之一。其他的,还有《牛虻》和《计算机解释的构造和解释》。牛的书,重构我们的人生观世界观价值观,或者知识结构,给我们新的生命。
      
      我对我的学生,我的学生也对我说过,要精读经典,重读经典,一遍又一遍。每一遍可能都有不同的体悟。
      
      贯彻这一原则,很久以来我一直想再次精读此书,并且希望我通读全书的过程能有益于你。所以,我开始录音这个过程,发布在网上。
      
      在这个录音中,有我的中文口音、我不认识的单词去查的过程,可能以后,还有你纠正了我的错误,我在以后的某次承认错误免得误导别人和对你的感谢。
      
      在这个录音中,还有我通读这本书的每一句,然后像英语精读课那样,划分句子成分,解释一些单词,从英语的语意,到计算机领域中它特殊的含义。还有我的各种猜测。这些过程,你都熟悉。
      
      你需要一本书,机械工业出版社 《C程序设计语言》英文版 第2版,作者 Brian W. Kernighan, Dennis M. Ritchie,2009年3月第1版。其他的版本可能也行,内容也许略有差异。也许,你还需要一支笔,用于标注生词、句子的语法结构,一些知识点。
      
      你还需要一些时间,每一次大约45分钟。我会不定期更新,上传,然后在这里通报一下。
      
      我需要你的意见,如果你方便和乐意。
      
      受我的水平所限,难以保证正确和深入,愿与同样的初学者一起进步;也请大牛们指正,谢谢你帮助我进步。
      
      
      
      康德在《实践理性批判》中说:"有两样东西,愈是经常和持久地思考它们,对它们日久弥新和不断增长之魅力以及崇敬之情就愈加充实着心灵:我头顶的星空,和我心中的道德律令。"我想,他说的是,道德律令之于人类,就像星空一样真实地存在。可以触摸和感受,不可避免地影响我们,无法逃避。我们来自于它,归结于它。
      
      C程序设计语言,也是的。
      
      
      录音在这里,[http://www.tudou.com/programs/view/7uHPX99xDaA/]。
      
      
      --------------------
      
      博客会手工同步到以下地址:
      
      [http://giftdotyoung.blogspot.com]
      
      [http://blog.csdn.net/younggift]
  •     前几周看了 C 的 HOPL, 有些东西挺有意思.
      
      1. 这本书 Kernighan 和 DMR 分工明确, DMR 写的后面和 OS 相关的那章, 还有附录. 其他是 Kernighan 写的.
      2. 语言的顺序是 BCPL->B->C. BCPL 不是 Ken 和 DMR 发明的, B 是Ken 做的, 一开始是对 BCPL 的模拟, C 是 DMR 做的, 一开始是对 B 的一个增强(当时 DMR 叫它 "new B" :> ), 后来 DMR 觉得区分够大可以算一门新语言了, 就顺着 B 取了 "C" 这个名字.
      3. 先在 PDP-7 上有了 UNIX 的雏形后有 C. 不过那时候也不叫 UNIX, 是 Ken 在 PDP-7 上用汇编写的一个 OS. 后来 DMR 用 C 重写了. DMR 写了第一个 C 编译器(显然..).
      4. DMR 大学读的物理, 但自觉能力不足以搞物理. 鄙人大学数学, 自觉能力不足以搞数学.. 看到这里我还是挺高兴的 :>
      
      最早的那些牛们常常写过 OS 和编译器. 啧啧.
  •     我花了一段时间去看这本书,之前是想通过这本书提高英文水平的。我觉得这本书确实很适合英语学习,因为在计算机专业方面的英文书籍这个算比较简单,但是我还是有好多单词不认识,有些东西没有理解,但是收获也有一点。一个没有让我想到的是,我从这本书上学到了好多之前没有学到的C语言的细节,我觉得这是一本很值得读的书。
  •     基本上,这是一本很简练的书,如果你是个编写程序的初学者,我不太推荐你去看,因为它讲的东西并不是很细,有很多概念没做过多解释直接就用上了的。书中的例子也是,而且偏向于unix系统的例子更多些,可能与本书的年代有关。但如果你是一个写过一些程序的学习者,想要进阶,还是可以看看的。
  •      上大学的时候是看的绿皮的那本,对C并没什么好感。后面看了一个电子版的c programming language,被其优雅所吸引,于是买了本纸质的细细的读,很多的关于语言的特性以前都是没了解过,况且是以这么简单的,通俗的方式去描述。
         以前认为关于程序的东西本身是比较枯燥乏味的,看这些书完全没这些感觉。这本书就像C语言本身那样,简单优雅。
  •      上大学的时候是看的绿皮的那本,对C并没什么好感。后面看了一个电子版的c programming language,被其优雅,详细所吸引,于是买了本纸质的细细的读,很多的关于语言的特性以前都是没了解过,况且是以这么简单的,通俗的方式去描述。
       以前认为关于程序的东西本身是比较枯燥乏味的,看这些书完全没这些感觉。这本书就像C语言本身那样,简单优雅。
  •     这是学习c不错的一本书,学编程的一定要看。
      
       当时还是在互动买的呢 现在还有:
      http://product.china-pub.com/14975
      
       本书是由c语言的设计者brian w. kernighan和dennis m. ritchie编写的一部介绍标准c语言及其程序设计方法的权威性经典著作。全面、系统地讲述了c语言的各个特性及程序设计的基本方法,包括基本概念、类型和表达式、控制流、函数与程序结构、指针与数组、结构、输入与输出、unix系统接口、标准库等内容。
      
  •     page 9
      
      "divided into lines" 是把 text stream 分成了行
      
      根本就没有翻出来
       是把 text stream 分成了行
      就像文本编辑器里面一样
      但是储存在文件里面的是一个 text stream 可以说是文本流
      
      其实就是字符序列 换行是用 \n
      读取出来之后才叫做 text stream
      存放的时候不叫text stream 叫 sequence
      
      
      1.4 the first paragraph 最后一个行
      practical 表示特定意义的 也没有翻译出来 或者说是详细的
      
      1.5 最后一行 交替调用 没翻译出来
      interleaved 是 交错的意思 就是说 两个的是可以调换的
      
      "的顺序可以上下交换" 但..接后面那句
      
      over
      
      
  •     这本书可以作为了解C语言思想的书籍,看过之后会对C有很大的了解,书中有很多概念性的东西是讲得不错的。一些C的缺陷,如数组和指针这两个东西一起使用,书中也有提到,实属不错。不过正如现在的人吐槽这本书一样,这本书的实际代码风格确实是过时了,在第二版的序言中,作者也有提到这个问题,如果真想写出符合现在规范的代码,在看完这部书之后请再去看看C99,这其实也怪不了作者,因为这部书写的时候ANSI C还没出现,这书是K&R C,当作入门书真的不错
  •   我是初学者,看着郝斌的视频,学了一星期,但是看本书的例子,还是很多看不懂呀~~~·~编译器用VC++6.0。。。。。。还有很多编译不出来。。。。
  •   编译器用gcc吧,除了最后一章的一个例子需要改一下,其他的都能正常编译
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7