如何学好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与指针》,也写得相当不错。英文名是“Pointers on C”,特别强调了指针的重要性,这是本书的一大特色。但是,这本书不太适合初学者。如果你学过C语言,有一些C语言的基础知识,但是不是很扎实,那么你可以试试这本书。相信只要懂了指针,C语言就不再神秘了。

如果你已经吃完了一本C语言教材,还想更进一步,那么有两本书是你必须要看的。第一本是C陷阱和陷阱,一本非常薄的小册子,内容非常有趣。需要说明的是,这本书是20多年前写的,里面提到的C语言的很多缺陷都得到了改进,但了解一些历史也不是坏事。然后就可以挑战专家级的C编程了。顾名思义,这本书相当难。一旦你认真阅读,理解透彻,你就可以放心地在简历上写上“掌握C语言”了。

记住一个原则,不要看你目前看不懂的书,那是浪费生命。如果看不懂,一定是缺少了一些必要的基础知识。此时,你要仔细分析你需要补充什么,然后去书店找关于这些内容的书。只有把基础知识补上,再回来学习,才能真正事半功倍。

第二,Unix/Linux还是Windows是个大问题。

不同的编程环境会造就不同思维的程序员。Windows程序员大多依赖集成开发环境,比如Visual Studio,而Unix程序员更喜欢Makefile和console。显然,集成开发环境更容易使用。在Windows上学习C语言,只需要按几个基本的visual c++工具栏按钮,就可以开始写Hello,World!在Unix下,你需要一些控制台操作的基础知识。可能有人觉得Unix环境更简单,但是习惯的力量很大。大家对Windows的基本操作都比较熟悉,专门为了学习C语言而安装一个Unix系统,似乎有点不划算。

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

所以我建议初学者还是考Visual C++ 6.0(不是Visual C++)。NET)或者Dev C++作为主要的学习环境,也永远不要太纠结IDE的使用技巧,因为以后肯定要转向Unix环境。Visual C++ 6.0简单易用,调试直观,但其默认编译器对C标准支持不好,而Dev C++使用gcc编译器,对C99标准支持较好。对了,现在很多大学还在用Turbo C 2.0作为C语言课程的实验环境,这是相当不可取的。原因一是TC 2.0对C标准的支持很少,二是TC 2.0编译的程序是16位,这对于以后理解32位程序会造成很大的麻烦(当然用djgpp之类的东西可以让TC 2.0编译32位程序,但那也太多了。

当你学完一本C语言的教材,就必须转向Unix平台继续学习。几乎所有的C语言高级课程都是基于Unix平台的(比如C专家编程)。转变的过程是痛苦的。你需要面对各种复杂的命令,和Windows平台上的思维方式完全不同,但是痛苦是值得的。Unix和C都诞生于* * *,Unix的思维方式和习惯更符合C语言。在Unix下,你可以找到无数优秀的源代码让你读得烂熟于心,你可以轻松地查阅某个库函数的在线手册,还可以看到最好的代码风格(说到代码风格,我会写一篇文章详细描述)。

归结为一句话:对于C语言初学者,建议使用Windows系统和集成开发环境。准备“大师”方向时,请先转Unix平台。

第三,万事俱备,你就是东风。

已经选择了书,并且已经配置了环境。正所谓万事俱备,只欠自己的努力。请从书的序言开始,认真阅读教材。很多人喜欢直接从第一章开始读,这是不对的。前言是作者对全书的概括性介绍。作者一般会告诉你需要什么基础才能顺利看完这本书,可以帮助你检查自己是否具备基础知识。看完序言,还需要浏览目录,了解书的整体结构,顺便给自己安排一个学习计划。

学习C语言,一定要注意每一个细节。必须自己敲书上的示例代码。只有编译执行后的输出和书上的一致,才算学完了一个例子。如果不符,一定要认真查找原因。出了书中的例子,我还得“创造”一些例子。比如在学习运算符优先级的时候,我可以写几个相同的表达式,把括号放在不同的位置,看看有什么不同的行为,比如*p++和(*p)++,或者a = b == c,(a = b) == c和a = = (b = =)。自己抄的书里的例子,改造后的例子,自己创造的例子,都要认真分类保存,并在源代码里写一个简短的注释,说明这个例子的意图。

例完了,还有练习。我建议初学者独立完成所有练习,然后对比答案的代码,看看自己的代码有哪些不足,再尝试修改自己的代码。很多人不重视习题,这是一个很大的错误,因为作者通常在习题中讲解一些重要的道理,而不是简单的检验之前的知识。

也许你觉得学起来太慢了,其实不然。认真学习就不用回去了。后来学的时候发现前面没想通。那真是得不偿失。一般来说,看完整本书,无论是原封不动地从书上抄下来的,还是自己心血来潮写出来的,都要完成几千行甚至上万行代码,这对以后继续学习是一笔财富。以我自己为例。我看《Windows核心编程》的时候(只看了3/4的内容),把书上的代码抄了一遍,自己写了很多例子。一个* * *有5574行(unix下wc工具统计)。时间久了,我记不住Windows的系统编程,但只要花几分钟翻出之前的代码,我就又知道了。就是这个原因,好的记忆力不如烂的文笔。

认真阅读,认真抄写源代码,独立完成习题并做进一步的实验,最后把所有代码都留下来作为自己的经验和财富。绝对是辛苦的工作,事半功倍。当然,这种方法只适合学习需要掌握的技能。如果不是学C语言,要具体情况具体分析。

最后还有一个非常非常重要的点没有提到——代码风格。从一开始,你就必须强迫自己模仿最好的代码风格。因为代码风格太重要,内容太多,我会专门一篇文章详细讨论。请注意程序员之路——关于代码风格。

题目是关于C语言的。其实我主要想说的是如何学习程序,或者只是一点感受。在这里,我只想引用一些身边人的例子,谈谈我对程序学习的理解。

第一个人将要谈论我。对程序产生了兴趣,但是听说程序可以当游戏。那是在初一的时候。但是,在借了一本简明的G-BASIC教材之后,我就傻了眼。

生疏的文字,奇怪的逻辑,都是天文中文翻译,让我头疼了好一阵子。

可是当时没有别的闲书可看,就整天抱着那本书,什么都试过了,甚至倒着看,什么也没看到。我自己没有电脑,只能大胆想象,然后满腹疑惑...

就此打住,以上是我的学习风格:总要经历一些波折,折腾几次,才会有偶尔的开悟——开悟!我甚至没见过几个人和我一样蠢。现在明白了,一开始总是把事情想得太复杂,导致狗咬刺猬的尴尬局面,我却有意外收获!但是不建议你模仿这种风格,至少在追女朋友的时候不要模仿。人生很多机会就在你接手的那一刻,失去了就再也找不回来了。

现在回来的时候无意中理解了一行代码,是打印语句。我当时太激动了,仔细看了这个看了那个,一下子明白了很多东西,好像一瞬间被什么东西撞了一下,顿时豁然开朗。。。。

我三年级在学校学的FOXBASE,基本都是自学的。我发现了一件奇怪的事情。我的记性差是出了名的,但我从来没有忘记当时程序里的命令。我还记得很多,可能是感兴趣吧。也感谢我的微机老师给了我自由使用电脑的机会!后来自学了QBASIC,第四个暑假学了一点C。当时我学习C遇到了很多困难,当时我们学校机房连C语言都没有,只能待在家里,拿着一本二级C教材,一套习题,整天发呆思考,把脑袋当电脑cpu,有时进入死循环,有时彻底崩溃。我花了十几天的时间看完一本书,做完一道题,脑子里却充满了疑惑。因为没有机会在电脑上实践,我逐渐建立了很多基于自己推测和推理的理论,非常骄傲和自信,但后来大部分都被证明是错的,我花了很长时间才纠正过来。然而还是那句话,破不了,停不了。就好像我现在有一台电脑,整天泡在互联网的海洋里,感受着快餐文化,很久没有静下心来思考一些事情。

我高中也上过几节计算机课,但是忙于高考。我放弃了学习程序的计划。我该说说这里的下一个人了。

高中的时候,有个女生坐在我旁边。她的文曲星里有基本的。偶尔拿过来编几个小程序玩玩。她看了之后很感兴趣。令人惊讶的是,她只看了三五个节目,听了几个命令的功能,就可以根据自己的想象编小动画了。她以前从来没有学过程序!我一度怀疑她的智商,但是她的程序太快了,让我睁大了好几倍的眼睛,比我高了好几个境界!后来我经常想,是不是我的方法不对,该怎么学程序。。。

一晃就到了大学,遇到了另一个我很佩服的人,和我一样学计算机的。他偶尔看到我做漫画,然后就很感兴趣,开始自学。令人惊讶的是,他不懂指针、结构、位操作等。(算法和数据结构就更不用说了),但是只学了三种程序结构。现在他只学了半年C,就能自己编蛇、俄罗斯方块、扫雷,还有很多无名游戏。现在正在写黑白棋。我知道我真的走了很多弯路。

如何学习程序?对于C,我觉得应该从画图开始。

原因有二。

首先,绘图程序非常令人兴奋,它能给你带来浓厚的兴趣,这是学习程序的关键。

第二,画图程序好用,做出漂亮的东西很简单。有很多东西甚至不用看课本就可以自己推出来(我觉得推理的方法很重要,是你自学的必要条件)。

比如画圆,从数学的角度来说,确定一个圆,我们只需要知道它的圆心(x,y)和半径r,那么就会画出一个好的圆,circle(x,y,r);

其他类比,画一个立体,选一个立方体,然后分析。只要知道两个对角的坐标。看课本。事实并非如此。为什么?你可能觉得电脑屏幕本来就是平面的,在这里用三维坐标的理论恐怕不是最简单的方法。所以应该用两个平面图形平移。这里有一个问题,如何在平面坐标中表达三维图形?自己慢慢学,很浅的东西。

如果要做一个动画,想象一下动画的原理只是从一个图形变化到另一个图形,变化不一样就会出现动画效果。然后你可以画一个,擦一擦,再画一个新的,然后换。。。

如果你有很好的数学知识,我想这将是一个从二维到三维,从静态到动态的快速过渡。

具体怎么学?你可以多找一些画画的例子,输入电脑,然后你就知道东西是干什么用的了,然后你就自己动手做东西了。

但是不要在这里沉迷太久。先学画图只是帮你轻松入门(很多人学了C还没入门)。

一会儿出图,你要打好基础,这里就不赘述了。可以边学边练。物理和数学课本上的很多问题都可以用程序演示和解决,可以尝试做更多的事情。这比你们老课本里的模型强多了,只有自己才能知道。

说到C语言,我想学过的朋友都有这样一种感觉,就是“让我开心,让我难过。”可喜的是,C语言功能非常强大,应用非常广泛。一旦掌握了,你就可以理直气壮地对别人说:“我是计算机专家!”“而且以后自学其他语言也很容易。忧的是,C语言像《少林武功》一样博大精深,太难学了。其实就作者而言,C语言并不“难”。只要你能理清思路,掌握其精髓,自学C语言是非常轻松愉快的。今天我就和大家聊聊如何学习C语言或者从哪些方面入手。

知道一些基本知识

一、C语言的背景

个人认为,无论学习哪种语言,首先要了解所学语言的背景,也可以说一下它的发展历史。

c语言属于一种高级编程语言,它的前身是“ALGOL”。其创始人是布朗·w·卡尼汉和丹尼斯·m·利奇。c语言刚出来的时候局限性很大,因为只能在UNIX系统上使用。然而,随着科技的进步和计算机行业的发展,C语言逐渐从UNIX中分离出来。1987年,美国标准协会制定了C语言的国际标准,缩写为“ANSI C”,从此成为一种广泛使用的编程语言。c语言有许多优点,主要如下:

1.它兼有高级语言和低级语言的优点,属于中级语言。

2.它是一种结构化编程语言,非常适合结构化编程。

3.有丰富的数据类型、运算符和函数可供选择。

4.直接处理内存使得修改和编辑其他程序和文档变得容易和简单。

第二语系的两种不同学习方法

我学过很多编程语言,比如c++(c++(C语言的扩展),QBASIC,VB(Basic的可视化),JAVA,J,VB,JAVA,ASP,FOXPRO,PERL等等。根据我的实践,高级编程语言其实分为两大语系。一路都是基于C的编程语言,比如JAVA,JAVA等。这些语言在函数调用、程序语句编写和循环控制方面非常相似。另一种是以BASIC为首的编程语言,如FOXPRO、VB等。这类语言也有类似的函数调用、程序语句编写和循环控制,但与C语言家族不同。所以,如果你之前是从QBASIC开始的,那么在学习C语言之前最好先洗脑,不要把学习BASIC的方法和思路套用到C上。

至此,我想大家对C语言一定有了感性认识!让我们升华它,全方位接触它。学习C语言必须从以下四点开始,也就是说,只要你能掌握这四点的内容,基本上就大功告成了。

怎样才能学好C语言?

有人问我C语言难学吗,我说不。后来有更多的人问,我就萌生了写一篇如何入门C语言的文章的想法。

其实C语言很简单。它只是一个交流的规则,一个表达的工具,一个思想的容器。之所以觉得难,是因为我不习惯用计算机的特性来考虑问题。就像中国人定居英国一样。虽然你学过英语,但那只是一个想象中的英国,和英国的真实情况相差甚远,所以有一个适应的过程,通常被称为过渡期或磨合期。

想尽快入门,就得掌握计算机的特点。计算机的特征包括:

1,计算机需要一个完整的解题方法,并且会告诉它所有的可能性。人可以按照习惯忽略一些事情,但电脑不行。比如在解一元二次方程的时候,我们在考虑问题的时候就已经默认了A不等于0,更有甚者,从B中减去4ac也默认大于等于零。这是我们的习惯。既然有解,我们通常就把它当成实数解,所以你做的程序一般不考虑这两个条件,但是计算机不行。电脑是出了名的智障。计算机不具备和人类一样的智能处理能力。它是人类的忠实信徒,无论你怎么想,它都会执行你的命令。因为你的习惯,一些别有用心的人或者无意犯错的人犯错,有时候会让电脑不知所措。累,甚至崩溃,报错,导致你的程序不成功,所以你觉得很难。

2.计算机要求程序的描述准确无误。人类语言具有很强的随机性和模糊性。我们平时说话的时候,有时候会有一些寒暄,有时候说话的逻辑会说不清楚。词语既可以表达这个意思,也可以表达那个意思。人可以根据环境和对方想表达的意思来分析意思,最后得出正确的结果,但是计算机很弱智。虽然它很听话,但是它不能理解你的想法,只会按照你给的指令去做,这就会导致执行过程中的报警和出错。

3、计算机编程要求有很强的全局性和逻辑性,没有起伏。人的思维有很强的活跃期和休眠期,而计算机没有。他们随时待命。人在思考一个问题的时候,有很多乐趣,但是这不是问题的全部,而是一部分,所以做完一段代码之后,就不愿意再写了,或者觉得很辛苦,所以觉得很难。

计算机要求它的主人考虑问题要全面,要把所有可能的情况和处理方法告诉它,要学会冷静,要有稳定的头脑,要把需要交流的句子用单一的意思说清楚。

怎样才能快速学习C语言,更快的度过磨合期?当然,记住和理解C语言的语法规则是必不可少的。除此之外,我们还应该注意以下几个方面:

1,对变量和函数的概念有很好的理解,至少回头看一下初等数学。这是基础,否则先天不足,学习再好也成不了气候。

2、心态平衡,虽然不能达到“不以物喜,不以己悲”的境界,但至少不要浮躁,不要急于求成,欲速则不达。

3.培养自己的全球意识,可大可小。

4.严格按照程序设计流程设计程序,不要跳脱。没有规则,你不可能成为方圆。

5、努力提高自己的综合素质。程序是人类思维的表达,是人类思维和语言的结合。你对客观性的重视程度与你所拥有的知识成正比。不理解问题,不会处理问题,就写不出程序。

6、学会沟通,多交流,取长补短,团队合作也很重要。

总之,实践出真知,多学习,多实践,多思考,多交流,勤奋好学。