学c语言的方法,c语言该如何学
我之前在http://sunxiunan.com/p=1597讲解过如何学习C语言。我们描述了一种相对系统的学习新编程语言的方法。学习C 语言可以按照类似的顺序完成:阅读参考书、阅读和编写代码、利用调试练习程序、参与在线讨论以及研究高级主题。学习语言通常从阅读参考书开始。 “一本书读一百遍就会明白其中的意义”,所以我们建议选择几本经典的好书,仔细地读一遍又一遍。选择学习C语言的好处是,这些书基本上涵盖了C语言编程的方方面面,但与C++不同的是,即使读了很多书,你也可能会感到困惑或难以理解,仍然存在陷阱。
1.豆瓣有参考书目。请直接参考http://book.douban.com/doulist/636329/并在下方留言。最好的阅读顺序是列表顺序。《The C Programming Language》 http://book.douban.com/subject/1230004/如果你只想买一本书来学习C语言,你可以买这一本书。如果您有足够的资金,我们建议您多购买几本,并在办公室保留一份,在家保留一份,以便随时翻阅。用三个词形容一下。 “经典的!”经典的!经典的!这本薄薄的书,只有200多页,涵盖了C语言的方方面面,是前无古人、前无古人的,任何言语都不足以赞美它。《The C Programming Language》 (KR) 包含一个简单的语法解析器、一个malloc 实现和一个非常有用的完整操作系统目录浏览程序。以上的特点基本上可以算是一个介绍。 KR 书中的每一段都包含了值得学习的软件开发工程实践经验。如果没有具体的开发经验,就不可能了解这些冰山之下隐藏着什么。例如,第一章建议采用以下方法:这本书解释了C语言的所有陷阱和可能出现的问题,但由于篇幅限制,写得非常简洁,很难一下子看懂。我正在逐字逐句地阅读这本书,所以我希望做笔记并写一些博客文章来分享。《C程序设计语言(第2版·新版)》 http://book.douban.com/subject/1139336/这是KR的中文翻译。请先阅读中文译本,然后阅读英文原版。你不仅可以学习英语,还可以理解简单明了的内容。原文风格优美。《C陷阱与缺陷》 http://book.douban.com/subject/2778632/《C专家编程》 http://book.douban.com/subject/2377310/这两本书是想要学习和使用C语言的朋友的必备书籍。C语言中数组和指针的区别用两到三章详细解释了,这两本书强烈推荐,因为它们可以填补KR跳过的一些细节。《C专家编程》 http://book.douban.com/subject/2132084/这是我强烈推荐购买作为案头书的最后一本参考书。传统的书籍要么简洁,要么专注于特定主题,不适合在遇到问题时参考。这本书《C语言参考手册》可以认为是全面、权威的C语言编程《C语言参考手册》。为了与时俱进,我们还涵盖了C99的内容。以下书籍可以作为交叉参考,都很有价值。我推荐大家购买。一本好书就像一个朋友,历久弥新。比如我推荐的书在豆瓣上评价很高,或者在亚马逊上重印。《新华字典》 http://book.douban.com/subject/1229973/指针到底有多重要,学过C(或者C++)的朋友都知道,这本书把指针带到了和C一样的水平。从头开始介绍,也可以作为学习参考书。《C和指针》 http://book.douban.com/subject/3775842/本书专门介绍如何实现malloc算法等标准C库。如何实现strlen函数?虽然本书中的很多代码与实际的C标准库有很大不同(标准库有性能优化的考虑,很多函数都有一些特殊的技巧),但它绝对值得一看。
《C标准库》 http://book.douban.com/subject/3422332/这本书实际上是C-FAQ的印刷版,可以说是各种编程语言的一流FAQ。如果您正在考虑申请或雇用与C 语言相关的程序员,请将此作为参考。《你必须知道的495个C语言问题》 http://book.douban.com/subject/4141733/本书介绍基于Linux具体操作系统的C语言编程,可作为计算机相关专业的教材或入门教材。书单包括原创编程书籍,非常难得。本书的几乎所有内容都是直接在网上发布的,这是一种罕见的开放性,并允许根据读者的反馈进行修改。我们推荐大家购买。学习C的时候,不要只看书本;练习完成书中的项目要求(比如创建目录浏览器)以及练习每一章的问题是需要的。这就需要一个可以用来实验的环境。本节提供各种操作系统的简要说明。
2、由于我们没有考察过实际实验环境的搭建,所以不知道现在在学校学C语言的人是否在追随谭浩强老师,用TurboC2.0编程,如果是结合的话,那就是耻辱。尽快将其放在一边。下面将主要介绍各种操作系统平台上的集成编程环境,但基于初学者和我个人的喜好,我会避免使用vim进行命令行编程,而直接使用IDE,我们建议您这样做。我们建议在Windows 系统上使用软件Code:blocks。这个软件最大的优点就是自带了基于mingw的GCC和GDB,只要下载70M左右的软件包就可以完全支持C++和C语言编程。各种功能(调试功能等)非常强大,版本更新也比较快。请小心下载并选择名称中带有mingw 的文件(例如最新版本为codeblocks-10.05mingw-setup.exe)(您的版本可能有所不同)。主页:http://www.codeblocks.org/我们还推荐codelite,它的更新比codeblocks更频繁。它还支持各种有用的插件、调试功能、WX等。
主页http://codelite.org/如果您需要针对Windows 操作系统进行开发,可以下载Visual C++ 2010 Express。由于Code:Blocks不包含Windows编程头文件(实际上也没有Windows SDK),因此不能用来创建与Windows操作系统相关的接口应用程序或服务程序。 VC++Express自带了这些头文件和编程库,虽然功能有点简陋,但基本足够练习了。主页:http://www.microsoft.com/express/windows/鼓励计算机同学使用Linux操作系统,更具体地说,推荐使用Netbeans和GCC作为桌面的Xubuntu操作系统(当然你也可以选择Code:Blocks)。在Xubuntu 上,您可以使用apt-get install build-essential 命令安装gcc 相关程序。你已经可以在终端中编译C语言程序了。但是,为了便于使用,您可以选择Netbeans 的C++ 支持包。可以从Netbeans 网站下载。主页:http://netbeans.org/features/cpp/index.html 如果你使用的是Apple Mac系统,毫无疑问XCode是编程的最佳选择。 XCode 可以从Apple 开发者网站免费下载。包含在iPhone SDK 中。主页:http://developer.apple.com/technologies/tools/xcode.html 如果您手头没有合适的编程环境,需要尝试一些简单的代码,请使用http://codepad.org/提供的服务并运行代码在线的。我们还建议申请github.com 帐户。您可以将练习代码保存到gist.github.com,这样您就不需要随身携带USB 闪存驱动器。
3. 互联网资源如果您想在10 分钟内了解有关C 语言的过去和现在的更多信息,这个维基百科页面http://en.wikipedia.org/wiki/C_%28programming_lang%29 适合您。从维基百科可以看出,C语言是由丹尼斯·里奇(Dennis Ritchie)于1972年设计的一种命令式结构化范式编程语言。该类型是弱静态类型,必须显式定义。最新的国际标准是C99。虽然设计主要受到B、ALGOL68、汇编语言、PL/I 和FORTRAN 的影响,但C 语言却受到了C++、Objective-C、C#、Java、Go、PHP 等众多编程语言的影响。 Python. 也产生了影响。 (我个人认为PHP受C的影响很大,基本上有C编程基础的程序员都可以轻松上手PHP,除了PHP的OO部分可以)。维基百科条目用很大的篇幅介绍了作者认为C 语言中缺失的功能,例如面向对象、多线程、GC 和异常处理。如果您需要这些功能,您可以使用其他编程语言。实现的另一个重点是“未定义的行为”。有些我们认为理所当然的结果实际上在C 语言标准中并没有明确定义。这些行为被假定为使用另一种语言编译和运行程序时应有的行为。使用编译器或不同版本的编译器可能会引入错误。以下维基百科条目描述了C 语言的用途。尽管当今有数百种编程语言,但我们必须承认,能够称为“系统级”的语言很少。在新兴语言中,只有Go 可以做到这一点。至今仍这么叫。目前,大型软件项目不太可能完全使用C语言,但核心部分可以全部用C语言构建。相比昂贵的C++开发工具,有大量的相关免费辅助开发软件。可以转换为Splint、valgrind等C语言,核心库即使长期使用也非常稳定。许多编程语言,例如Glasgow Haskell编译器,都选择C作为中间层,因为C对多种平台的广泛支持,并且其编译器相对成熟可靠。另一个可以找到大量与C语言编程相关的信息的地方是“美味书签”。如果您搜索特定关键字(C+programming),您可以找到许多值得探索的资源(http://delicious.com/search p=c+programming)。您还可以在dmoz .org 上查看C 语言分类法http://www.dmoz.org/Computers/Programming/Languages/C/。时效性比美味书签差,但分类更系统,搜索更容易。程序员常常很懒。 “模仿主义”、“抄袭主义”非常流行,也很有效。当您并不真正理解某个特定函数或关键字时,了解其他人如何使用它是非常有教育意义的。以下是一些常用的代码搜索网站。最常用的是谷歌的代码搜索,不幸的是它已经被关闭了。您还可以选择http://koders.com/http://www.krugle.org/http://www.codase.com/。您还可以查看维基百科类别“带有C 语言示例的文章”。那里的代码也非常好。您也可以在github.com上搜索相关项目。在之前的博文中,我还介绍了一个名为Rosetta Code http://rosettacode.org/的网站,在这里你可以找到不同编程语言针对特定问题的解决方案,对于学习和比较非常有用。学习编程需要阅读大量著名作者的经典代码。正如学习中文或英文需要阅读大量经典著作一样,C 编程中一个好的项目就是一面飘扬的旗帜和一大群人。查看Lua、Sqlite、Nginx 等项目的代码。代码量不大,而且代码质量比较高。您还可以查看Linux内核代码,并且有很多书籍可以帮助您解释它。有关如何更好地阅读代码的更多信息,请参阅书籍《Linux C编程一站式学习》。
读了几本书、写了代码、简单阅读了别人的代码后,你就可以用C来解决工作中遇到的问题了,让C成为一把真正的瑞士军刀。只有在编程工作中经常使用C语言,并仔细思考如何使用C来设计优雅、高效的系统,才能更深入地理解C语言的设计哲学。您还可以访问http://stackoverflow.com参与答疑,学习他人的回答。例如,这篇文章http://stackoverflow.com/questions/2054939/char-is-signed-or-unsigned-by-default 描述了有关C 语言char 类型的一个小陷阱。在学习C语言时,有几个挑战需要注意,例如指针和数组的区别、如何解释复杂的类型定义以及预处理器和宏定义的正确使用。其实这些内容在之前的书中已经多次提到过,所以按照步骤来学习是没有问题的。当你学完C 后,你还可以学习Lua 或Python 等动态语言,并尝试在实际项目中将动态语言和C 结合起来。 1加1的力量远大于2。第二(开玩笑,哈哈)。如有疑问,请留言。
附录有用的C语言网络资源:C语言标准组织ISO JTC1/SC22/WG14的主页。 ISO C 文档可以在这里找到:http://www.open-std.org/jtc1/sc22/wg14/《代码阅读 Code Reading》 作者Dennis Ritchie,一篇非常经典的文章。 http://cm.bell-labs.com/cm/cs/who/dmr/chist.html 《C 语言全景》 这个网站很全面:http://www.softpanorama.org/Lang/c.shtml Dan Saks' ColumnProgramming (embedded.com )指针,里面的文章很详细,值得一读。 http://www.lysator.liu.se/c/c-www.html 这也是C语言资源的概述页面。 http://www.ioccc.org/index.html 混沌C语言代码大赛非常有名。 http://en.wikipedia.org/wiki/Underhandled_C_Contest 另一个主要针对黑客的C 编程竞赛。我们建议订阅两个讨论组:comp.lang.c 和c.moderated。这些群组代表了互联网上有关C 相关编程问题的最大论坛:http://groups.google.com/group/comp.lang.chttp://groups .google.com/group/comp. lang.c.moderated 收集并总结了各种按位运算C语言。面试时经常会出现很多问题。 http://graphics.stanford.edu/~seander/bithacks.htmlC的专家台湾Jserv博客推荐大家订阅:http://blog.linux.org.tw/~jserv/
一些C语言相关的项目值得关注和研究:TinyCC,在很多项目中用作动态编译C语言的编译引擎:http://bellard.org/tcc/GCC标准库实现:http://en.wikipedia.org/wiki/GNU_C_LibraryGlib是GTK底层辅助编程库,与C标准库不同,它在C语言中实现了面向对象的机制:http://en.wikipedia.org/wiki/GLibdietlibc在上一篇博文中介绍过C标准库的另一种实现,如:http://www。 fefe.de/dietlibc/
使用C 语言编程时,有多种工具和软件可以帮助提高代码质量。 http://www.splint.org/http://valgrind.org/http://www.dwheeler.com/flawfinder/PMD 可用于检测重复代码。 http://pmd .sourceforge.net/cpd.htmlllvm 静态分析项目http://clang-analyzer.llvm.org/
C语言编程规范编程标准:http://en.wikipedia.org/wiki/MISRA_Chttp://www.eecs.harvard.edu/~ellard/CS50-96/programming-style.htmlhttp://developers.sun.com/solaris/articles/secure.htmlcert此文档适用于国内使用.中文翻译版本可用:https://www.securecoding.cert.org/confluence/display/seccode/CERT+C+Secure+Coding+Standardhttp://www.cs.utah.edu/dept/old/texinfo/standards/standards_toc.html
C语言编程电子书及教程:http://publications.gbdirect.co.uk/c_book/这本书讲得很详细,可以认为是类似于谭浩强版的教材。 http://www.knosof.co.uk/cbook/cbook.html 这本书是云峰推荐的,对C99标准进行了非常详细的介绍。欲了解更多详情,请务必阅读。 http://www.duckware.com/bugfreec/index.html 这本书的中文版在互联网上流传(《The Development of the C Language》)。还有英文版《编写优化、高效、无错地代码》。 http://wangcong.org/blog/page_id=196 作者王聪也是个极客,从两个示例章节来看,里面的内容还是蛮多的。《编程精粹》 本书可在百度文库或谷歌上找到,供阅读和参考。《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、C++》 http://www.oualline.com/books.free/style/index.html 《C Elements of Style》 http://www.dwheeler.com/secure-programs/《Linux安全编程》 电子版http://crypt stanford.edu/~blynn/c/《C Craft》 函数指针教程。 http://www.newty.de/fpt/index.htmlC 语言编程和Unix 系统调用想用C 在Unix 或Linux 上编程的朋友应该参考这个指南。 http://www.cs.cf.ac.uk/Dave/C/Optimizing C and C++ code http://www.eventhelix.com/RealtimeMantra/Basics/OptimizingCAndCPPCode.htm 通过图像和文本介绍C 语言指针http://boredzo.org/pointers/Introducing 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 中的一些C 语言Unix 编程相关文章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.htmlC语言编程技巧http://users.bestweb.net/~ctips/高级C编程,高级C语言编程可以提高你的水平,非常有用http://www.mpi-inf.mpg.de/Departments/rg1/teaching/advancedc-ws08/literature.html C语言问答,这些问题面试时也可以用http://转载自www.gowrikumar.com /c/https://sunxiunan.com/archives/1661
天地劫幽城再临归真4-5攻略:第四章归真4-5八回合图文通关教学[多图],天地劫幽城再临归真4-5怎么样八回合内通
2024-04-03