如何以最小的代价学习并精通C语言是本文的主题

学习 C 不是一蹴而就的,但掌握它也不需要十年时间。如何以最小的努力学习和掌握 C 语言是本文的主题。

请注意:即使是“最低成本”也绝不是捷径,而是在最短的时间内获得最大的回报,也意味着你需要经历艰苦的过程。

一、如果你想读一本好书,最好不要读

所有初学者面临的第一个问题是:如何选择教科书。一个好的开始是成功的一半,选择一本优秀的教科书是事半功倍的关键因素。不幸的是,学校通常会给你一个糟糕的 C 教科书。幸运的是,您可以再次选择。

著名教授谭浩强出版了《C语言编程》一书,据说发行量超过400万。据我所知,很多学校都会推荐这本书作为C语言教材。虽然我的名字(谭浩宇)和教授的名字只有一个字,但我非常坚决地批评他的书。

这本书不是为计算机专业的学生写的,而是为需要参加计算机等级考试的其他专业的学生写的。本书的主要缺点是:示例程序非常不专业,不能教会你编程应该掌握的思维方式;编程风格很差,会让你养成乱码的习惯;错误太多了,已经有人指出了书中的数百个错误,其中很多是关键的概念性错误。好吧,关于这本书,我不想多说。有兴趣的可以百度一下。

Kernighan 和 Ritchie 的《The C Programming Language》(《C Programming Language》的中文翻译)是经典中的经典之作,但很多旧版本已经过时,与当前的标准 C 语言相去甚远。您必须阅读最新版本,否则最好不要阅读。此外,即使是最经典、最权威的书籍也无法面面俱到,因此手头有一本《C语言参考手册》是非常有必要的。

《C语言参考手册》即《C参考手册》,是对C语言标准的详细描述,包括大部分C标准库函数的细节。可以说是最好的标准C语言参考书。顺便说一句,最新的《C 程序设计语言》是根据 C89 标准修订的,而《C 语言参考手册》描述的是 C99 标准。两者之间可能存在一些差异。建议按照C99标准学习。还有一本书《C and Pointers》,写的也不错。英文名称为“Pointers on C”,特别强调了指针的重要性,这是本书的一个特点。

但是,这本书不太适合初学者。如果你学过 C 语言并且有一些基本的 C 语言但不是很扎实,那么你可以试试这本书。相信只要懂指针,C语言就不再神秘。

如果你已经读完了一本 C 语言的教科书,想要更进一步,那么有两本书是你必须阅读的。首先是《C Traps and Pitfalls》(《C Traps and Defects》的中文翻译),一本很薄的小册子,内容非常非常有趣。注意,这本书是二十多年前写的,里面提到的很多C缺陷都得到了改进,但了解一些历史也不是坏事。然后就可以挑战《Expert C Programming》(《Expert C Programming》的中文翻译)。顾名思义,这本书难度很大。一旦你仔细阅读并彻底理解它,你就可以放心地将它写在你的简历上。“精通C语言”。

记住一个原则,看不懂的书不要看,浪费生命。如果你不明白,那么你一定错过了一些必要的基础知识。此时,您需要仔细分析您需要添加哪些内容,然后去书店寻找描述这些内容的书籍。补充完基础知识再回去学习,真的会事半功倍。

二、Unix/Linux 还是 Windows?这是个大问题

不同的编程环境会造就不同思维的程序员。Windows 程序员主要依赖于 IDE,例如 Visual Studio,而 Unix 程序员更喜欢 Makefile 和控制台。显然,IDE 更容易上手。在 Windows 上学习 C++,只需按几个基本的 Visual C++ 工具栏按钮即可开始编写 Hello, World!,而在 Unix 下,则需要一些控制台操作。基础知识。

有些人可能认为Unix环境更简洁,但习惯的力量是巨大的。Windows的基本操作大家都熟悉了,为了学C语言,装个Unix系统似乎有点不划算。

图片[1]-如何以最小的代价学习并精通C语言是本文的主题-老王博客

对于一个只知道Windows基础,甚至不知道DOS是什么的新手来说,尽快做一些有趣和有意义的事情是最重要的。用 C 语言编写一个小程序,比学习 ls 和 cat 之类的命令有趣得多。此外,如果我们想专注于C语言本身,我们不得不暂时忽略一些东西,比如编译和链接的过程,Makefile的编写方法等等。

因此,我建议初学者应该以Visual C++ 6.0(不是VisualC++ .NET)或者Dev C++作为主要的学习环境,不要太纠结于IDE的使用,因为以后你必须转移到 Unix 环境。Visual C++ 6.0 使用方便,调试直观,但是它的默认编译器不能很好地支持 C 标准,而 Dev C++ 使用 gcc 编译器,它很好地支持 C99 标准。

顺便说一句,很多大学的C语言课程仍然使用Turbo C 2.0作为实验环境c语言程序设计课本答案,这是相当不可取的,原因之一是TC 2.0对C标准的支持很少,二是TC2.0编译出来的程序是16位的,这对以后理解32位程序会造成很大的麻烦(当然用djgpp之类的东西可以让TC2. 0 编译一个 32 位程序,但这太复杂了)。

学完C语言教材后,必须转向Unix平台继续学习。几乎所有的高级 C 语言教程都是基于 Unix 平台的(例如《C Expert Programming》)。过渡的过程是痛苦的,需要面对各种复杂的命令,与Windows平台上的思维方式完全不同,但痛苦是值得的。

Unix和C是共生的,Unix的思维方式和习惯更符合C语言的思维方式和习惯。在Unix下,你可以找到无数优秀的源码供你阅读,你可以轻松查看一个库函数的在线手册,还可以看到最好的代码风格(说到代码风格,我会专门写一篇详细描述)。

可以用一句话来概括:对于初学者学习C语言,推荐使用Windows系统和集成开发环境。当你准备好向“大师”方向努力时,请先转向Unix平台。

三、万事俱备,你就是东风

本书已选中,环境配置完成。俗话说,万事俱备,只欠自己的努力。请从本书的前言开始,仔细阅读手头的教材。很多人喜欢直接从第一章开始阅读,这是错误的做法。前言是作者对全书的总体介绍。作者一般会告诉你成功阅读本书需要具备哪些基础知识,可以帮助你测试自己是否具备这些基础知识。读完序言后,你也应该浏览一下目录,了解本书的整体结构,顺便给自己安排一个学习计划。

学习C语言,必须注意每一个细节。书中的示例代码必须是自己打的c语言程序设计课本答案,编译执行输出与书中一致才算是示例。如果不一致,必须仔细查找原因。书中有了一些例子之后,我还得自己“创造”一些例子。比如学习运算符优先级的时候,可以写几个相同的表达式,在不同的位置加上括号,看看有什么不同的行为。,如*p++和(*p)++,还有a = b == c、(a = b) == c和a = (b == c)等等。你复制的书中的例子和改造后的例子,以及你“创造”出来的例子,都要仔细分类保存,

在示例之后,还有练习。建议初学者独立做所有的练习,然后检查答案的代码,看看自己的代码有没有不足,然后尝试修改自己的代码。很多人不注意练习,这是一个很大的错误,因为作者通常会在练习中解释一些重要的道理,而不是简单地测试以前的知识。

也许你认为学习太慢了,但事实并非如此。如果你认真学习,你就不必回去了。当你后来学习时,你会意识到你以前没有弄清楚。这真是得不偿失。一般来说,读完整本书,你应该完成几千甚至几万行代码。无论是原封不动地从书中复制,还是随心所欲地写出来,它都是未来学习的资产。

以我自己为例,我在阅读《Windows Core Programming》的时候(我只看了3/4的内容),除了复制书中的代码,我自己也写了很多例子,一共5574个行(用unix下的wc工具算),看了好多天,想不起来windows的系统编程了,不过只要花几分钟时间把之前的代码挖出来看看,就明白了再说一遍。所谓记性好,不如写得好,这是事实。

仔细阅读,仔细复制源代码,独立完成练习并进一步实验,最后将所有代码留作自己的经验和财富。当然,这种方法只适合学习需要精通的技术。如果不是学C语言,需要具体分析。

写到最后,有一个非常非常重要的一点没有提到——代码风格,你必须从一开始就强迫自己去模仿最好的代码风格。

原标题:初学者,如何学好C语言?

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论