我的C语言是自学的,这些年看过不少教材。
下面,我对其中一些教材做个点评。
1. How to Think Like a Computer Scientist: C version
这是我读过最易懂的C语言教材。
虽然它只讲解最基本的语法,但是写得特别好懂,深入浅出,读起来不觉得累,而且它还允许免费下载。我认为,这是C语言的首选入门教材。
下载网址:http://prof.beuth-hochschule.de/scheffler/lehre/programmieren-in-c/
2. C Primer Plus和C Programming: A Modern Approach
上面这两本,都是著名的C语言初级教材,都是厚厚的大部头。
我通读过它们,感觉都写得不错,都值得推荐。但是因为这两本书定位类似,内容重复,相比之下,我觉得C Primer Plus可能更适合中国读者的思维,更易读一些。
3. C Programming Language (2nd Edition)
这是最著名的C语言书籍。
但是,它不是写给初学者看的,更偏重C语言的编程技巧和算法思维。我读过两遍,还是觉得很多地方没读懂。
4. 国产教材
通常来说,国产教材质量不高,不值得推荐。但是有两本,我想特别提一下。
《零基础学C语言》,康莉等著,机械工业出版社,2009。
这本是我在图书馆里偶然捡起来的,翻了几页,发现是原创的,而且写得比较认真,代码解释详尽,行文错误少,就把它读完了。我认为,在国产教材中,这本书的质量很高,值得推荐。
《Linux C编程一站式学习》
这本书在国产书籍中罕见地采用了GFDL许可证,http://learn.akae.cn有在线阅读,可以免费下载。这一点值得高度肯定。
但是,正如前言所说,它的主要资料来源是两本英语教材《How To Think Like A Computer Scientist: Learning with C++》和《Programming from the Ground Up》,以及一些教师的上课讲义,然后拼在一起,做成一本书。所以,造成它的体系比较生硬,缺乏整体感,衔接得不好,很多地方没有做到由潜入深、循序渐进。所以,我觉得这本书不适合初学者,可以当做手册查资料。
5. Beginning Linux Programming
这是我现在正在阅读的书。我看它在Amazon上排名Linux C编程的第一位,就选了它。
它主要讲解如何用C语言调用Linux的系统API,偏重基本概念的解释,我已经读了两章,感觉还不错。
=================================
下面想听听大家的意见。
我现在的C语言,到了这样一个水平:语法已经基本掌握了,可以独立开发一些小程序。下一步,我想进一步提高C语言水平,主要用于Linux开发。
大家能不能推荐一些C语言的中级教材?
(完)
lithium 说:
直接上系统编程,停留在语言层面没什么意思。
《unix环境高级编程》
2011年9月18日 15:53 | # | 引用
3345678 说:
语言就像窗户,可以让你看到不同的世界
2011年9月18日 16:00 | # | 引用
kk 说:
没看过K&R也敢说你会C?
2011年9月18日 16:13 | # | 引用
levin 说:
这位说话很不客气啊,为什么没看过你说的那个就不能会C了?你很牛逼呗?
2011年9月18日 16:25 | # | 引用
cndj 说:
K&R必看, 如果你要学linux编程, 直接买《unix环境高级编程》. 然后开始在写自己需要的程序, 有什么不会再看书. 在初学阶段是要看书没错, 但是过了那个阶段, 要提高就只能多写程序, 遇到不会再来查.
还有, 其实C语言很简单, 完全没必要看那么多这类入门书. 有精力就看 这类书比较好.
2011年9月18日 16:45 | # | 引用
Neutralevil 说:
C是一个比较小的语言,明面上的语法特性您上面看的那些书已经足够。进阶主要在一些技法和陷阱方面。这些书我觉得比较好:C Traps and Pitfalls、Pointers on C、Expert C Programming。其中最后那本涉及到挺多底层细节,如果您觉得看K&R有点吃力,那可能Expert C Programming也比较有难度。还有一本国内没有上市:C Programming FAQs,不过在网上可以找到内容:http://c-faq.com/。
关键还是要多读多写代码。读的方面可以看看The Standard C Library,学习C标准库是怎么实现的。还有本可能不太出名但其实非常好的书是Linux Programming by Example: The Fundamentals,它的一个特点是很多例子基于真实的GNU或UNIX代码讲解。
2011年9月18日 16:55 | # | 引用
yanng 说:
国内的《c程序设计》谭浩强,好像是最经典的一个。
2011年9月18日 16:56 | # | 引用
fleuria 说:
国产教材的话裘宗燕老师的《从问题到程序》也挺不错,很适合编程的初学者。
2011年9月18日 16:59 | # | 引用
lxd 说:
The C Book
http://publications.gbdirect.co.uk/c_book/
2011年9月18日 17:18 | # | 引用
ning 说:
Unix环境高级编程,+1。10年Linux C编程,看完和没看完的也有几百本了,手头留下的开发用的实体书只有Unix环境高级编程,TCP/IP详解,和Unix网络编程,都是Richard Stevens的。好些书看过了就再也不需要了,接口的东西网上有的是,而这几本书讲的是机制,是Unix C开发的生态环境。面试的时候经常听人说熟悉C开发,了解Haskell,精通Java,熟练Python,可是什么叫精通,熟练一门语言呢,还是生态系统。编译器,编译环境,运行环境,测试工具,性能评测,解释器扩展,GUI等各种支持库的框架。至于语法和标准库,这些只是用来入门的。
2011年9月18日 17:23 | # | 引用
Jeff 说:
C语言四书五经:
《C和指针》
《C语言陷阱与缺陷》
《C专家编程》
《C语言接口与实现》
2011年9月18日 19:11 | # | 引用
booster 说:
SICP,看看语言设计背后的东西你就会知道,c语言有现在这样简洁的面貌是设计上的自觉,它把理论性的东西和工程上的脏东西处理的很好,好到大部分人甚至都不知道有这事情,一切都是那么自然。
然后就是UNIX高级编程之类都工具书啦,当然,这个和c语言本身没什么关系,离体了,不过要拿c语言干活倒是必须知道这些
如果相当语言专家都话,直接看c99标准吧。
2011年9月18日 19:31 | # | 引用
于小鱼 说:
C Programming Language可以当工具书用,很薄,但是很多细节的小东西不确定了都可以查到。Beginning Linux Programming国内英文版的要170多,据说中文版翻译巨烂,我现在看英文电子书呢,很好。千万别看谭浩强的书,错误很多,坑人,还不如哈工大出的那本教材用来入门。接下来可以看看Unix网络编程,还有C专家编程什么的吧,我也还在看。
2011年9月18日 19:49 | # | 引用
missingplant 说:
关于C语言的教材,我推荐The GNU C Programming Tutorial。
据说Richard Stallman有一次遇到了作者,要求他将这本书开源,他就照办了。
这本书也许深度有所不及,但是作为入门的教材是相当的好。章节安排合理,结构清晰,很短时间内就可以读完。
2011年9月18日 20:14 | # | 引用
刺猬 说:
我认为看书对于补充理论来说很有意义,现阶段阮一峰可以多读下C的经典代码吧,这个对于提升能力非常快。
2011年9月18日 20:25 | # | 引用
zicjin 说:
KK都还有很多地方没懂不应该,先把KK弄个底朝天再说
2011年9月18日 20:25 | # | 引用
土木坛子@比利时 说:
峰哥推荐,值得信赖。
其实现在不是缺少资料,是缺少耐心。
2011年9月18日 20:49 | # | 引用
kk 说:
恩,我是不懂。
那再说一句:没看过CC也敢说你是程序猿?
2011年9月18日 20:54 | # | 引用
Karl 说:
你说你看不太懂K&R,这样应该不是语言层面的问题,而是对计算机硬件和OS的理解不足导致的。我觉得,要理解C语言,需要理解计算机原理和汇编,才能明白C语言为啥设计成那个样子。
从这个角度,推荐《深入理解计算机系统》,能让你更好的理解计算机和OS,同时这书也是很好的linux下的C语言开发入门教材。
2011年9月18日 21:22 | # | 引用
sagasw 说:
http://sunxiunan.com/?p=1661
漫谈C语言及如何学习C语言
2011年9月18日 21:23 | # | 引用
rrandom 说:
嗯...c专家编程
http://book.douban.com/subject/2377310/
2011年9月18日 21:25 | # | 引用
John Doe 说:
感谢推荐!我一直想找一本入门的书,您推荐的第一本看了几页,觉得作者的确是很有针对性的给初学者写的!百度知道那些求助都不适合我,哈哈。
2011年9月18日 21:48 | # | 引用
Vix 说:
土木君!没想到在这里遇到了~~~非常赞同你的说法~~缺的就是耐心啊……而且现在信息量大反而不能够很好的汲取。
2011年9月18日 22:27 | # | 引用
bigfoot 说:
其实国产的入门教材有一本值得一推,裘宗燕老师著作,比起他的译作来籍籍无名。
实际上写得很好,深入浅出。我通读过。
从问题到程序:程序设计与C语言引论(第2版)
http://images.china-pub.com/ebook195001-200000/198062/zcover.jpg
http://product.china-pub.com/198062
2011年9月18日 22:40 | # | 引用
s7evenz 说:
这本恰恰是C入门比较糟糕的一本书。如果不是高校垄断使用也不可能有这么高的发行量。
2011年9月18日 23:08 | # | 引用
Chao 说:
推荐《Computer Systems: A Programmer's Perspective》 2ed,建议可以参考一下CMU的课程的online Notes。 CMU系统编程的三门课:15123 15213 15410。 上面本书是15213的课本。
2011年9月18日 23:46 | # | 引用
呆子 说:
可以推荐fortran方面的吗?支持峰哥。
2011年9月18日 23:58 | # | 引用
神僧 说:
http://book.douban.com/subject/3012360/
人民邮电出版社《c和指针》,Kenneth A.Reek著,徐波译。
在经历了谭浩强等国内的烂教材的蹂躏之后,我对c语言倍感迷茫,借由此书,才终于在某些地方豁然开朗,从此走上真正的C学习之路。
2011年9月19日 00:16 | # | 引用
熊力 说:
Expert C programming
强烈建议看看中文版, 我见过的翻译书中, 最正点的中文翻译了!
2011年9月19日 00:57 | # | 引用
湍流の梦想 说:
C语言是个比较小的语言。楼上Neutralevil的意见靠谱。
K&R讲的是C语言的语法和语义,是针对编程老手的,不是准备来教新手如何编程的。这本书,最好是买本英文本备查。新手学C,最好用把语言和基本编程方法结合在一起教的教材。
C语言与机器结合比较紧密,所以,很多概念最好是懂点汇编语言,才容易理解,最好是知道C语言中的某个特性在对应的汇编中是怎么样的。
2011年9月19日 05:49 | # | 引用
Xtrats 说:
学语言,《C专家编程》
学Linux编程,《Unix环境高级编程》
2011年9月19日 08:04 | # | 引用
tylr42 说:
http://prof.beuth-hochschule.de/fileadmin/user/scheffler/lehre/think-c_v1.05_g.pdf
峰哥推荐的第一本在网站上下不下来呀
2011年9月19日 08:16 | # | 引用
hqs 说:
用c做整个软件的构架设计是最难的。
2011年9月19日 09:09 | # | 引用
lldld 说:
我觉得你看的已经够了,开始做具体的项目吧.
有不清楚的就上网查,查查就会知道还缺少哪方面的知识需要去学习,很可能并不是C语言本身的知识.
c,linux的很多资料我都是直接去查linux man page的,比如: http://www.linuxmanpages.com/
2011年9月19日 09:57 | # | 引用
poet 说:
编程语言不是用来学的,是用来用的(少数语言例如lisp除外)。K&R是C作者写的东西,当然值得读,就如同说你学C++必须要读BS的书一样,通常只有读发明者的书才能更深刻的理解这个语言,不过一般而言,发明者的书不适合初学者。
我想象不出有什么语言需要看5本书之多,以我二十多年的编程经验来说,似乎没有什么语言有必要看超过两本书。直接上手开始做,才能真正掌握,而这些是看100本书都无法得到的。
对于每个语言来说,入门书有一本就够了,至于提高书,当你有了一定的编程经验后有一本也就够了。这就是我认为不需要超过两本书的原因。
至于工具书,我个人认为意义不大,因为绝大多数用于查API和基本概念的东西都有电子版,也都可以直接在网上搜到,没有必要收藏一本书(收藏一个页面或者一个google关键字要比收藏一本书方便得多)
2011年9月19日 10:01 | # | 引用
yaoweibin 说:
《Unix环境高级编程》,现在linux作C开发,这本是必看的。C的语法其实很简单,看几本语法书就行了,主要是要多实践。现在c主要用在效率要求的比较高的地方和嵌入式方面,这本书主要是用于学习c跟系统的交互。
2011年9月19日 10:09 | # | 引用
ls zhao 说:
恩,最主要的是要去写。我们老板就是说,不要把东西都学会了再去干。
2011年9月19日 10:20 | # | 引用
fnu1984 说:
有个错别字:"由潜入深"
2011年9月19日 11:39 | # | 引用
柚子 说:
好多搞C的大拿啊。
有两个事希望大家或者博主介绍一下:
1.国内目前做C开发的都做哪些应用?
2.能够做一个类似的C++的推介?
谢啦
2011年9月19日 13:08 | # | 引用
ho 说:
问下各位大大,如果是在校的非计算机专业的本科生,能怎么找到写C代码的机会呢?
我唯一想到的就是看STL,然后自己写下基本的lib。
请指教。
2011年9月19日 14:15 | # | 引用
kysnail 说:
2011年9月19日 14:42 | # | 引用
YetAnother无证程序员 说:
一们语言的繁荣往往得益于它所寄生的平台的繁荣。C语言生于Unix,介绍Unix的经典书籍也就那些,如上面有人提到过的“Unix环境高级编程,TCP/IP详解,和Unix网络编程,都是Richard Stevens的”。要往深处了解一们语言,就要掌握这们语言的平台和生态系统。
其实我觉得你对C语言本身的掌握到了这个程度已经足够了,那些介绍所谓C语言的各种奇技赢巧的书大可不必看,浪费时间好处又不是很多。目前我觉得另一本书更适合你《Computer Systems: A Programmer's perspective》,目前已经出了第二版了。我觉得这本书可以弥补C语言本身以及Linux编程之间的知识空缺。
2011年9月19日 14:49 | # | 引用
larmbr 说:
学汇编,尤其是AT&T语法的汇编,学链接与装载,学习c标准库,每一个的学习难度都比C上不止一个台阶,但如果拿下了,你的C,或者说你的计算机功底,能让你轻松胜任很多工作,对计算机或者说语言的理解层次上几层台阶。我觉得这是学习一门语言的要义,我个人认为不能把语言纯当作一门工具,用它来工作在我看来是在有深刻理解后一种自然而然顺带的事。欢迎一起学习.
2011年9月19日 16:08 | # | 引用
skyscribe 说:
同推荐Richard Stevens系列,字字珠玑,Unix/Linux必备。
2011年9月19日 16:11 | # | 引用
san 说:
经典书籍上面都有列出了,,,(共三卷),K&R C作者既是C语言的创立者,是难得的一本好书.其他教材入门即可以扔掉.c primer plus可以作手册用,里面写的很详细..
2011年9月19日 20:51 | # | 引用
leevi 说:
不用教材,写程序就好。
2011年9月19日 21:52 | # | 引用
爱看文学 说:
博主推荐的那本蓝色的零基础学C,这个系列的书都很不错的,比如学习PHP,JAVA,MYSQL等等,都有,而且写的都挺好。不过我们学校用的是清华大学出版社的一本书,谭浩强写的,绿色封皮的,忘了叫啥名了,感觉也没啥特色。
2011年9月20日 09:31 | # | 引用
阿四 说:
这里的评论真是个宝库,就像楼上几位高手说的,阮兄书看多了。K&R的开篇就说了:the best to learn a language is using it.(大意如此)。我也觉得一两本书就够了,然后就是看代码,写代码。有一些*nix上的小工具代码据说挺适合阅读一下,比如coreutils的代码。
2011年9月20日 09:52 | # | 引用
grants 说:
唉。。。今天遇到个女计算机硕士 只会写printf.........
2011年9月20日 11:09 | # | 引用
fifar 说:
认真看完了所有评论,评论意义大于文章,受教了。
2011年9月20日 20:40 | # | 引用
Mead Lai 说:
《C专家编程》
《linux程序设计》
C就这两本就够了...基本熟悉linux下面的文件,网络,线程,信号量...
基础就有了,再选一个UI(随便),就可以开发小工具了...
其实吧,你把这两本书看完,练习做完,就很不错了...
我反正现在对语言都没概念了,学哪个都是coding...
木激情,
2011年9月21日 12:42 | # | 引用
bush 说:
該推薦的樓上諸位都說了~
不過我覺得博主看第三本還有許多沒讀懂,說明基礎仍然不扎實,需要的是更多思考揣摩。
2011年9月21日 21:58 | # | 引用
风吟 说:
哈哈,锋哥,我刚整理完一个C语言速查,就看见你整理C语的书。。
https://ganquan.info/standard-c/
C语言算法比较难,其他还好。现代的语言很多语法都跟它类似的。
2011年9月22日 10:31 | # | 引用
willbbetter 说:
我感觉如果想用C语言开发程序,《C语言详解第六版》十分精彩,它的特别之处就是在于能够用软件工程的思想来介绍C语言,而且难得可贵之处就是其中很多例子举得十分其当,看的时候都会十分的敬佩作者怎么会想的如此得体,后来想想也是,已经出了六版了,而且它其中会涉及到项目,项目都是实战型的,还有代码解析,每个例子都是以实践为基础的,所以也让人看起来津津有味。
从刚开始学习C语言就被很多人告诉它属于中级语言(介于汇编与高级语言之间),特长在于底层开发,尤其它的精髓在于指针,后来随着学习的深入才发现这话的确是太对了,《C与指针》这本书也适合强化指针,如果已经有了许多基础在看就会如鱼得水一般,会对自己的指针能力得到强化,全书都是贯穿指针来讲解的。《C陷阱与缺陷》应该说是咱们的枕边书了,该书是为数不多的这么多年了,都维持原版原貌,没再版而又一直经典的书籍呀,书中介绍的许多编程技巧都太值得思考了,比如说开篇就介绍的 ==技巧,几乎好像所有人都犯过这个毛病(将=写到条件里),一个简单的变换 1==i ,就解决了,网上对谭浩强老师的书籍攻击,有很大一部分都是因为编程风格,养成一种好的编程风格确实好处太多,尤其是在编写大程序的时候。我感觉如果可以尝试编写1000行代码的程序,就尽量写的大一些,写小程序和大程序的感觉是不一样的,1000行代码的程序和10个100行的感觉可真是没法比的,乐趣当然也没法比较,也许是阶乘的关系吧。有些很有趣的算法书也可以尝试,但是初期最好看源码的,虽然很多人说源码影响理解算法精髓,当刚开始个人感觉最好还是从源码入手。数据结构也可以有效强化C语言。
非常感谢您的博客,一直在订阅,说实话,您的好多文章都对我帮助许多,给我了莫大的启示,您的好多话语也在影响我——让一名普通的大学生不断的得到成长与反思,一直都不知道怎么感谢您,也借助这个机会,想和您说句:谢谢。大学时间我一直热衷C语言编程和底层编程,希望这些文字可以给您一些参考。
2011年9月22日 21:17 | # | 引用
屋顶的蓬蒿 说:
看了那些书,c语言层面的东西就足够了,下一步就是牛逼加班敲代码,api调用看系统文档,程序结构看软件设计书,这阶段跟具体语言关系不大。
2011年9月23日 13:09 | # | 引用
黄耀鑫 说:
《C Programming Language (2nd Edition)》 这本不就是 K&R C的了吗?怎么还有评论者说没有K&R?
2011年9月24日 14:26 | # | 引用
qs 说:
在补上一本,“微软C编程精粹”,关于C设计的书。
2011年9月25日 11:59 | # | 引用
hchaojie 说:
K&R 作为入门是必须要看完的,其他的都不需要。有的例子不太好理解,但是书很薄,完全能啃完。习惯了你就会发现看这本书的乐趣。不懂的可以发邮件问我:)
2011年9月26日 18:02 | # | 引用
popovich 说:
其实我也是想推荐《深入理解计算机系统》(最近出第三版了)。这本书一共有三部分,第一部分以C语言为例介绍了一些计算机系统里面的基本问题,对理解C语言和计算机系统特别有启发性,虽然不难,但很细致,肯定能满足你这阶段学习的需要。后面两部分基本上都是系统编程的东西,也都是以UNIX为例讲的,整个大流程的东西都讲到了,个人感觉看完后两部分就能开始动手在 UNIX上面用C做一些小东西了。
这本书整体都讲的都很清楚,中文版译的也很好,而且书中习题设计的也很好,如果遇到比较难懂而且不太容易动手做的部分(比如链接那部分,对于新手来说基本没有省时省力的动手实践的方法),还可以通过做题增加感性认识。还想深入学习或者对更具体的问题有疑问的话看参考文献就成了。
2011年9月26日 22:07 | # | 引用
lovekonakona 说:
推荐了很多好教材, 万分感谢
2011年9月28日 09:04 | # | 引用
李超 说:
来过好多次了,今天发现博主要学C,本人是程序员,自己主要用C++,说说体会供你参考。
个人感觉,教材有一两本好的就够了,你前边列的应该都够用了。我是好多都没看过,C语言的我主要就一本教材,是上面3号的中文版,说实话,初学者一两遍看懂倒是不正常了。
我当初入门的时候也是不懂,现在想想,其实开始不清楚的地方可以放一阵再看,一些相关的知识只看一点是很难理解的,要联系起来理解。
《Programming from the Ground Up》看过前面一点,理解内存结构对C很有帮助,后面就没怎么看了,本人英文水平也不太好,汇编也用不到。
比较重要的是要实践,多写多练。
建议你写自己用得着的小程序,少写那种写完就扔的(初学实验代码除外)练习,可以持续改进,不断完善。遇到问题查查书上的解释,直接Google一下也挺方便的。这个过程中,许多知识慢慢就掌握了。
那时候再看相关的书,就不全是“哦,原来如此”了,而是经常要“这个我也知道”呵;以博主的水平,以后可以考虑自己写一本入门书啊。
2011年9月30日 23:46 | # | 引用
int3 说:
很遗憾,我是那种和C语言结婚的人。
如果你打算只是用C写一些小工具,或者没什么过高的需求,从楼上各位的回复也基本能推敲出来:看上一两本书,然后就是写代码实践之。
如果你也想成为和C语言结婚的人,除了上面大家已列出来的经典书籍必读外(国内的书我始终不推荐),我建议尝试写一些代码练练手,慢慢地写一些基本的库,然后自己实现整个标准库。
最后我想说的是,掌握汇编,至少要很轻松地读懂汇编语言写的代码(那种格式的无所谓)。
2011年10月 3日 20:47 | # | 引用
Z 说:
在amazon上搜“linux programming”,出来的第一条是The Linux Programming Interface: A Linux and UNIX System Programming Handbook。作者是linux man-page的maintainer。此书无论从权威性到可读性都堪称一流。另外推荐同样是nostarch出版的autotools一书。这俩本书算包括了在source tarball里能够看到的全部内容。
2011年10月 7日 15:45 | # | 引用
haiyang 说:
留言的都是牛人!
我学生一个,目前自学计算机,主要编程语言也是C。
大一时学过谭浩强的,带我入门。虽然网上骂的很多,但毕竟这本书对我来说还是带来了价值。幸亏当时学的不太好,后来看K&R相当于重新学习C。接下来看了《C专家编程》和《C陷阱与缺陷》。个人觉得学C语言上的东西这么多已经足够了。学C一定要学Linux,前面人都推荐过了,《深入理解计算机系统》(CSAPP),《UNIX环境高级编程》(APUE),两本书非常推荐。还有Richard Steven其他的《TCP/IP详解》,《UNIX网络编程》都是很好的书。《UNIX编程艺术》,《编程珠玑》也值得一看。
2011年10月 8日 20:46 | # | 引用
围城观者 说:
《你必须知道的495个C语言问题》。关注于编写代码时语法等相关细节问题的小书。很多人推荐的都是大部头,我表示不能理解,实际写代码时,书都是拿来翻的,不是拿来看的。
2011年10月15日 23:05 | # | 引用
ablozhou 说:
劝阮兄别深入学C语言了。C语言是个泥潭,陷进去了出不来。虽然阮兄很好学,但也不必样样精通。就算你很精通,也敌不过一个三年C语言编程的程序员。
我觉得您的价值还是多思考,而不是都去实践一番。人的精力毕竟有限。要做什么事情说一声,程序员一大把。
这是一个兴趣太广范的人的心声:)
2011年10月25日 14:32 | # | 引用
黑色会小混混 说:
C语言其实是最难的一门编程语言,难再它灵活的应用,它的底层结构。如果对硬件,计算机系统等等不是很了解的话是很难学好C的。如果仅仅需要编写一些电脑上的应用的话。建议可以尝试其他的语言
2011年11月 9日 15:23 | # | 引用
vx13 说:
《如何学好C语言》 : http://coolshell.cn/articles/4102.html
阮一峰先生,您可以看看这个,最好订阅这个博客,会有些帮助。不知道您是出于何种目的学习 C 语言,应该根据自己的目的选择教材。在这里留言的人,包括本人,往往是有自己的专职工作,被经验限制住了自己的看法,并不一定可靠。
C 语言最权威的文档是上面网友说的 C99 标准,该文档可以在下面的地址下载:
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf
这个文档适合编译出错的时候查询。
学习使用 C 语言,要养成良好的习惯,就要选择好编程环境,还要有氛围良好的交流空间。尤其是对于您这样的自学者,可能会缺少一些系统性的基础知识,才产生了障碍。上面也有网友指出, K&R 是入门的书,吃透这本书不是必要的,但是可以减小以后产生基础盲点的可能性。
我的建议是,您先设计一个有一定难度的项目,并完成它。根据您的兴趣,设计一个桌面程序或网络服务,然后搜索类似的项目的源代码,在其基础上修改,完成自己的项目。这个过程中,发现什么不知道的,再去查对应的文档。查文档,看手册,要比看些教程更实用。
2011年11月 9日 17:59 | # | 引用
jamesprite 说:
Next:
《C语言程序设计:现代方法(第2版)》(可选)
《C专家编程》
《C陷阱与缺陷》
Next:
《UNIX环境高级编程》
2011年11月13日 03:25 | # | 引用
dd 说:
Expert C Programming
2011年11月15日 22:16 | # | 引用
silent sojourner 说:
1.学计算机语言和学英语一样,可以分成两个层次。第一个层次是未入门的层次,表现为:不知道哪本书对自己有用;学了不少,感觉好像进步不大;感觉好像掌握了不少知识,但是碰到实际问题,需要真刀真枪地上,感觉还是不行;如果一段时间不用,感觉忘得很快。。。
第二个层次是入门的层次,表现在:能对各种资料自由取舍,为我所用;碰到实际问题,虽然不一定立刻就知道解决办法,但是心里有底,适当查些资料,很快就能适应;不容易遗忘,即使很长时间不搞,需要的时候,稍微热热身,就能重新捡起来。
所以,阮兄的C语言,应该还是未入门的水平。入门未入门,不是用写了多少行程序来衡量的。不要以为能看懂所谓的中级或者高级教程,就以为自己的水平就是中级或者高级了。其实中级和高级的差距,远远没有未入门和已入门的差距大。
2.学计算机语言,一定要自己动手写代码,才能真正理解。楼上几位说得很多了。
3.C语言的难度,我的理解,其实未必是语言本身。纯从语言来讲,可能Prolog还更难一些。因为C语言主要用于系统编程,所以难度主要在于理解系统的实现细节。
2011年12月18日 08:49 | # | 引用
richter 说:
我时时关注你的blog,也买了两本实体书:)
这里对你学习c的目标有些疑问。我本人是DBA,工作中基本没有用c写程序的需求。在这里谈谈我学习使用c的一些感想,希望对你有些帮助。
1)通过c,逐渐了解OS。
2)利用对c的熟悉,阅读一些程序源码,进而学习到一些设计方法。
3)三不五时用c写一些小程序,热热身,将很多os的知识点温习。
4)偶尔用c写一些算法关联的小程序。
大概有这么几条。
之前项目中用c写过一批设备驱动(应用层)的移植(windows->linux),开发的感想是必需在工作中将程序所经历的各个知识点(包括语言层面、OS层面)都需要尽量的掌握。这样就会越做越熟。能把遭遇的每个知识点讲清楚其实不简单。
楼上的许多朋友开了很多书单,不少我都有。有一部分作了细读。很多经典书我都在淘宝上卖了盗版:)论斤买:)手上有实体书,偶尔翻一翻,都有收获。特别是2、3本书对同一个知识点用不同的角度阐述,收获较多。
最后作个总结:)
c就像打开os的一把钥匙、一个电筒,没这个,很难成为系统程序员。
2011年12月31日 10:04 | # | 引用
ThunderQ 说:
我觉得Accelerated C++很不错,学了那个,再学习C的内存管理(指针之类的)会有快速入门的效果!
2012年1月13日 15:46 | # | 引用
K&R 说:
博猪就是传说中的猪脑了吧,看什么也没用。这些书都是相当基础的了,这些也看不懂还搞什么C
2012年1月26日 14:39 | # | 引用
田 说:
我现在想学习网络攻防的东西 但是我的c语言太差了我想从头开始学习,请问那本书比较全面的讲解c 谭浩强的入门书籍我看过
2012年1月28日 13:52 | # | 引用
兵临城下 说:
很赞同
2012年2月 1日 17:05 | # | 引用
duyiwuer 说:
博主看的都是英文版的,这说明博主已经是一个高手了,《Unix环境高级编程》不错,我之前看过一段时间,看得很吃力,不过书的确不错,现在因为其它事情就停下来了
2012年4月 7日 18:48 | # | 引用
duyiwuer 说:
这位兄弟说的我赞同,停留在语言层面没什么意思,也没有意义,用它来做东西才是意义所在,我是计划学完第一遍《Unix环境高级编程》后就开始参考Apache或Nginx写Http服务器的,但是因为其它一些事情就停下来
2012年4月 7日 19:09 | # | 引用
duyiwuer 说:
这位前辈是高手啊,已经有10年Linux C编程经验了
2012年4月 7日 19:12 | # | 引用
ivan 说:
非常赞同你的说法,看过一些大型程序的源代码,架构设计的确是最难和最有最有创造性的
2012年5月 8日 20:03 | # | 引用
王伟 说:
unix/linux 编程实践 这本不知名的书籍要强烈推荐。
其它就是著名的 unix环境编程 unix网络编程
如果都会了,我觉得可以再来学pyhon, python+python库具备c+ c各种库的所有功能,好用易懂优雅,是快速开发的良好选择,因为有了C 和 unix 的基础, 对python各种库也能很轻松掌握。
2013年4月17日 23:45 | # | 引用
renrensahng 说:
支持,实践才是最好的证明。
2013年4月23日 21:19 | # | 引用
Frank 说:
之前在图书馆看过两本书《C语言的科学和艺术》(《The Art and Science of C》),《C程序设计的抽象思维》(《Programming Abstractions in C》),都是罗伯茨写的,是斯坦福大学的教材,非常不错,尤其是第二本,这两本不能算是语法书,总结了程序设计的思想,各种数据结构的实现,通过头文件作为接口,几乎实现了面向对象,代码也很规范,命名很地道,读起来很舒服,两本书我都买来珍藏了。
PS:相比之下,谭浩强的那本简直弱爆了,纯粹误人子弟啊。
2013年8月 1日 11:12 | # | 引用
peach5460 说:
C Programming Language
这本蛮好的,我在网上下的PDF看了中文以后...去买了一本英文实体书...
2013年9月 4日 09:34 | # | 引用
Lee 说:
您这么说,我等都是石头脑子了,当然也不曾想望您项背。本来一个讨论式的回帖,竟招来如此喷子。
2013年10月20日 14:01 | # | 引用
Lee 说:
已经加入收藏夹,非常感谢!
2013年10月20日 14:04 | # | 引用
刘江 说:
这书图灵出过,中文版的名字是《你必须知道的495个C语言问题》:http://book.douban.com/subject/3422332/
图灵的中文版《C标准库》:http://www.ituring.com.cn/book/317
2013年12月12日 07:12 | # | 引用
优雅C 说:
C Programming Language 这个不就是么
2013年12月31日 15:18 | # | 引用
冰与火 说:
看《黑客与画家》里面作者格雷厄姆就说过C语言的教材"The C Programming Language"是写得非常好的,语法用示例阐述得很明白。我看过两遍,觉得有它就够打基础的了。精力有限,没有必有看那么多书
2013年12月31日 17:49 | # | 引用
Axl 说:
语言仅仅是个工具,重要的还是原理吧?
看了你的文章,认为你提的这个应该不是一个能困惑到你的问题了。
2014年1月20日 01:45 | # | 引用
小D 说:
范磊老师的《零起点学通C语言》这本不错
2015年6月29日 00:00 | # | 引用
jiaming 说:
非常强烈推荐地你看看这本《C语言其实很简单》,新出版的书。确实很接地气,很好玩,很另类的书。漫画顺口溜还一大堆,还有很独特的学习方法。看了指针那章,那些方法简直从未听说过(我也读了不少书都没有),没费什么劲指针我感觉指针就掌握到高手的境界了,简直是一绝!
2015年9月26日 21:18 | # | 引用
我说我是个包子 说:
最近买了一本《C语言其实很简单》,读了几章,那叫眼前一亮的说,讲的太好了!学习方法很独特,看过这么多C语言教材是我从未见过的,可谓经典的一本!这样的方法和叙述风格初学者学起来会很轻松。这是刚刚新出版的书,你应该吧这本也加上介绍或评论
2015年10月 1日 15:27 | # | 引用
我说我是个包子 说:
楼上的也看过这本?英雄所见略同的说,握手:)
2015年10月 1日 15:29 | # | 引用
jindongdong 说:
那本C Programming Language (2nd Edition)不就是K&R吗?这哥们是不是不懂装懂呀?
大家推荐的确实有不少相当经典。不过,谭浩强的那本真是不敢恭维,举例子都用数据库那方面的,干脆讲office得了。