C语言学习方法
参考 http://sunxiunan.com/?p=1661sunxiunan
C语言学习顺序:阅读参考书,阅读代码,编写调试实际程序,上网参与讨论,研究高级话题。
1,参考书籍
- 《The C Programming Language》 如果你只想买一本书学习C语言,只需要买这一本就够了。用三个词语来形容它就是:经典!经典!经典!这本薄薄的只有二百多页的小书涵盖了C语言的方方面面,前无古人而且后无来者,任何溢美之词都不足以形容它。
- 《C程序设计语言(第2版·新版)》这是K&R的中文译本,可以先从中文译本看起,然后再读一遍英文原版,既可以学习英文,又可以体会原文那种简约优美的风格。
- 《C陷阱与缺陷》 《C专家编程》 这两本书也是学习及使用C语言的朋友必备的两本书,比如《C专家编程》,专门用两三个章节详细介绍C语言中数组与指针的不同之处,这两本书在某种程度上算是对K&R略过的地方做了详细补充,强烈推荐。
- 《C语言参考手册》可以看作是C语言编程的《新华字典》,全面而权威。里面还涵盖了C99的内容,紧跟时代潮流。
- 《C和指针》 指针的重要性如何,学过C语言(或者C++)的朋友都知道,这本书更是把指针拔高到了与C语言平起平坐的地位,其实也是从头开始介绍,作为教学参考书也是可以的。
- 《C标准库》 这本书是专门介绍C语言的标准库如何实现的,比如malloc算法,用标准的C语言该如何写?strlen这个函数应该如何实现?尽管书中不少代码与真实的C标准库相差很多(由于标准库需要考虑性能优化,很多函数有一些特定的trick),但是绝对值得参考。
- 《你必须知道的495个C语言问题》 这本书其实就是C-FAQ的印刷版本,C-FAQ在各种编程语言的FAQ中可以称得上质量一流。如果你想应聘或者招聘C语言相关程序员,这本书一定要参考。
- 《Linux C编程一站式学习》 这本书是基于特定操作系统Linux来介绍C语言编程,可作为计算机相关专业的教科书或入门参考书,也是书单里面唯一一本国人原创的编程书籍,非常难得。书中几乎所有内容都在网上直接公开,针对读者的意见进行修改,这也是非常难得的一种开放态度。非常推荐大家买一本。
学习C语言,一定不能只读书,应该动手练习完成书里面的项目需求(比如编写一个目录浏览器)以及每章的练习题目。这就需要有可以实验的环境,下面针对不同操作系统简单做一下介绍。
2,开发环境
Windows系统下推荐大家使用Code::blocks这个软件。这个软件最大优点是自带了基于mingw的GCC以及GDB,只要下载70M左右软件包,就可以完整支持C++、C语言编程了。各种功能(比如调试功能)也很强大,版本更新也比较快。注意下载选择名字有mingw的文件,比如最新版本是codeblocks-10.05mingw-setup.exe(版本也许有所不同)。
另外推荐codelite,相比codeblock,这个更新的更频繁一些。也支持各种比较有用的插件、调试特性、WX等等。
如果需要做Windows操作系统的开发,可以下载Visual C++ 2010 Express。
因为Code::Blocks不包含Windows编程头文件(实际是因为没有Windows SDK),无法编写Windows操作系统相关的界面应用程序或者服务类程序。而VC++Express自带了这些头文件以及编程库,虽然功能稍微简陋,但对于练习使用基本够用。
主页:http://www.microsoft.com/express/windows/
对于计算机专业的学生朋友,建议大家使用Linux操作系统,或者更详细一点是使用Xubuntu操作系统作为桌面,使用Netbeans和GCC这个组合(当然也可以选择Code::Blocks)。在Xubuntu下可以通过apt-get install build-essential这个命令安装gcc相关程序,已经可以在Terminal下编译C语言程序了,但为了使用方便,大家可以选择Netbeans的C++支持包,在Netbeans网站上就能下载。
主页:http://netbeans.org/features/cpp/index.html
如果使用苹果Mac系统,毫无疑问XCode就是编程的绝佳选择,XCode可以在苹果开发者网站上免费下载,在IPhone SDK中也包含了XCode。
主页:http://developer.apple.com/technologies/tools/xcode.html
如果手头没有合适的编程环境,还需要实验一些简单的代码,可以用http://codepad.org/提供的服务,在线编写运行代码。
另外建议大家申请一个github.com的账号,在gist.github.com可以保存自己的练习代码,就不需要随身带着U盘了。
C语言编程电子书及教程:
- http://publications.gbdirect.co.uk/c_book/ 这一本写的非常详细,你可以把它看成是类似谭浩强版的教科书。
- http://www.knosof.co.uk/cbook/cbook.html 这一本云风曾经推荐过,相当深入的介绍了C99标准,深入细节时候需要读读。
- http://www.duckware.com/bugfreec/index.html 这本书在网上流传一个中文版本,《编写优化、高效、无错地代码》,另外也有英文影印版《编程精粹》。
- http://wangcong.org/blog/?page_id=196 作者王聪,也是相当hard geek,从两个样章看,包含了相当多的内容。
- 《C语言深度解剖》这本可以在百度文库或google搜到,可以读读,有些参考性。
- 《C标准和实现》作者姚新颜,他的《深度探索C、C++》算是当年比较有深度的书籍,可惜已经绝版了。这本书也可以在百度文库搜到。这本书也比较值得读。
- 良葛格C语言学习笔记 http://caterpillar.onlyfun.net/Gossip/CGossip/CGossip.html
- C与C++的兼容性问题 http://en.wikipedia.org/wiki/Compatibility_of_C_and_C%2B%2B
- 另一个文档关于C与C++标准兼容性问题:http://david.tribble.com/text/cdiffs.htm
- 《C Elements of Style》http://www.oualline.com/books.free/style/index.html
- 《Linux安全编程》http://www.dwheeler.com/secure-programs/
- 《C Craft》电子版 http://crypto.stanford.edu/~blynn/c/
- 《The function pointer tutorials》函数指针教程。http://www.newty.de/fpt/index.html
- C语言编程及Unix系统调用,想用C在Unix或者Linux编程的朋友可以参考。http://www.cs.cf.ac.uk/Dave/C/
- 优化C、C++代码http://www.eventhelix.com/RealtimeMantra/Basics/OptimizingCAndCPPCode.htm
- 图文并茂介绍C语言的指针 http://boredzo.org/pointers/
- 另外一篇介绍C语言优化的文章 http://www.prism.uvsq.fr/~cedb/local_copies/lee.html
- 一个C语言教学ppt http://www.slideshare.net/petdance/just-enough-c-for-open-source-programmers
- 一些Unix下C语言编程相关的文章 http://users.actcom.co.il/~choo/lupg/tutorials/index.html
- Unix下如何建立静态、动态C语言函数库 http://users.actcom.co.il/~choo/lupg/tutorials/libraries/unix-c-libraries.html
- 如何使用GDB http://users.actcom.co.il/~choo/lupg/tutorials/debugging/debugging-with-gdb.html
- 一些C语言编程技巧 http://users.bestweb.net/~ctips/
- Advanced C programming,高级C语言编程,可以提高水平,非常有帮助http://www.mpi-inf.mpg.de/departments/rg1/teaching/advancedc-ws08/literature.html
- C语言问答,这些题目也可用于面试 http://www.gowrikumar.com/c/