我是如何自学C语言的(一个菜鸟的学习路)

---------------------------------------------------------------------------------------------------------------------------

零基础扫盲课:          

 计算机科学速成课(扫盲课):http://www.bilibili.com/video/av21376839?p=1&share_medium=android&share_source=copy_link&bbid=XY7E88A79EC619D70EF9C6178548CA18C2D49&ts=1553011775645

        简介:这个视频会以自下而上的方式,给你介绍整体计算机行业的各项知识,这样初学者对整个计算机的概貌就能有一个全面的了解,会知道自己现在所学的知识处在计算机知识体系的哪一层,视频讲的非常好,推荐刚刚入门的学习好好看看。如果有一定的基础,看起来会格外通畅。

---------------------------------------------------------------------------------------------------------------------------

更新:2018/10/13

由于百度分享链接经常失效,所以把网盘中的链接整理出来,方便大家查看。

=====================================

1.Mark  编程先导课[也可以只看上面的 零基础扫盲课 ](链接:https://pan.baidu.com/s/1tz_IDqtiE0lGoQD-oMMqzQ 
提取码:zeri )

2.翁恺  C语言程序设计https://www.bilibili.com/video/av15267247?from=search&seid=7782577682535480079

3.小甲鱼  带你学C带你飞https://www.bilibili.com/video/av27744141?from=search&seid=7110535145381574166

4.小甲鱼  汇编语言https://www.bilibili.com/video/av28132657

   学习路线( https://www.lanzous.com/i74aied   密码:5ynm

======================================

 

---------------------------------------------------------------------------------------------------------------------------

带我入门的鱼C论坛http://bbs.fishc.com/forum.php

---------------------------------------------------------------------------------------------------------------------------

 

    首先,本人也是一个菜鸟,目前依然还在学习,当初在我开始自学C语言的时候,走过了好多弯路,如果你看到这篇文章,希望你不要走我走过的弯路,这也是我写这篇文章的目的,我也不想像老头子一样叨叨叨,哪些要做,哪些不要做,好像自己很牛逼一样。我只是把自己觉得是坑,是弯路的地方,结合自己的看法,复述给你听,希望你有自己的理解。

1.  不停的换教程,我总觉得自己正在学的教程没有把我给讲懂,就认为这教程不行,后来慢慢的深入了之后才发现,教程大体上都是差不多的,并不是教程讲的不好,而是本来应该自己花时间去思考的东西,认为应该是由老师来讲的,所以即使再好的教程,我也觉得不怎么样(当然也有很差的教程,就是特别啰嗦的,说半天说不到点子上的,这种视频就不要看了!)。还有书,入门的书我买了好几本,到最后真正看的只有一本,就是谭浩强的那本。虽然这本评价不是很高,但是确实是这本书带我入门的。我当初的入门书是谭浩强的《C语言程序设计》第四版,指针部分讲的通俗易懂,非常形象。教程是小甲鱼的,叫做《带你学C带你飞》。当初自己就应该完整学完一本书和一套教程,你在学习的不同阶段,对知识和体系的理解是不一样的,这也是为什么在计算机学习中,囫囵吞枣是一个褒义词了。换了那么多书和教程,实在是浪费时间,现在想想,挺后悔的。

 

2.  下载各式各样的教程,我看见名字牛哄哄的教程就会把它保存到百度云盘里,然后下载到电脑上,典型的教程收集狂,,我的电脑硬盘几乎是满的!我电脑里有800G左右的视频教程,每天看着这些个教程,就好像看着满大箱的金元宝,感觉自己好有钱,像 渗透测试,WEB安全,逆向破解看着就叫人热血沸腾,哪里还有兴趣学C语言,恨不得直接上  渗透测试。当然,这是不可能的,万丈高楼平地起,C语言都没学会,谈何这些呢?这些电脑里的教程,让我越来越浮躁!一天我不知哪里来的想法,把电脑里这个阶段没学到的“高深教程”全都给删除了,顿时感觉世界都清净了!专心学基础的,接下来的这段时间,我专心了不少,这些教程给了我莫大的学习计算机的动力,也耗费了不少精力,去胡思乱想,万丈高楼平地起,专注很重要!

   

3.  不动手,只用眼睛看,我刚开始学的时候,觉得教程讲的我都听得懂,干嘛还要敲一遍代码?然后到自己写作业的时候,就是各种出错,天花乱坠的错误!!!输入法错了啊,关键字打错了啊,少一个括号啊!崩溃!然后我再也不敢怠慢了,该自己敲一遍的代码,就自己好好打一遍。还是会出错,各式各样的错误,很蛋疼!过了两个星期左右,我就明显的感觉自己的错误变少,思路也更清晰了!到最后要学完的时候,有一个作业是做一个简易通讯录的程序,一百多行的代码,我敲完顺利编译运行!没有错误,如果我一直偷懒不动手,是不可能达到的。现在想想,编程也是一个不断试错的过程,一开始学的时候,是不断纠正自己的错误,因为开始的程序都是简单的。到后来,程序越来越复杂了,就是找程序的错误,如果自己的错误都没有解决,何谈后面解决程序的错误呢?

 

4.我这个人喜欢刨根问底,应该有很多才入门的朋友和我差不多,总想把东西彻底搞明白,再学下面的东西。这种习惯其实是非常好的,但是在学计算机方面的东西有点不现实,因为有些知识是要你有一定的基础之后才能理解的。当初我记得自己一直纠结常量和常变量有什么区别,问了老师。老师也没把我讲明白,后来学到内存自然而然的就懂了。所以我建议不懂的知识,先囫囵吞枣,先吃下去。最后回过头来就自然而然就消化了。

 

5.  一开始我听老师说,编程主要学的是其中的思想,听完自己感觉挺轻松,认为学思想,不就是听听课,没作业吗?所以没有吧课后作业当回事。过了几天,继续上课听老师讲,直接听不懂了。后来还是和一个学长交流,他说课后作业很重要,这是一个巩固的过程,将自己的知识用起来,这样就能更好的理解了,这也是一个反馈的过程。反馈非常重要,通过作业,写出一行行的代码,直到顺利运行,是一件很有成就感的事情,更能够激励自己去学习!学长讲的挺有道理的,我也听进去,按照他说的操作了,自己实践证明,写课后题确实是一个很好的巩固和反馈的方法!

 

自己当初就是不专注,眼高手低,懒,才浪费了那么多时间,现在想想其实也挺可贵的,毕竟是一段难忘的经历,但还是希望看到这篇文章的朋友,别走我走过的坑。

-------------------------------------------------------------------------------------------------------------------

更新:2019.02.27

      强烈推荐一个免费良心的Arduino教学网站(太极创客):http://www.taichi-maker.com/内容超详细,讲的深入浅出,谁听谁知道!!!

        太极创客讲的C++面向对象编程基础讲的非常好,结合Arduino开发实例,如果你学完了C,对C++面向对象编程有兴趣,不妨先看看他们的课,作为入门资料是非常不错的。

        说实话学C语言其实挺枯燥的,学完了也不知道干啥。本身自己是学机械,所以对硬件特别感兴趣,所以经常做一些小制作,但是这些小制作都很没啥技术含量。我当时就想学单片机来着,于是就上网找学习路线,无意中就关注到Arduino,这是一款开源微控制器(看着像玩具,实际功能很强大)。淘宝上十几块就可以买到了一个入门的板子,当时挺感兴趣,就买了一块,而且它是C语言来开发的,并且集成了大量的库,我们可以用很少的代码实现我们想要的功能,总之非常好玩。如果你也喜欢小制作,我推荐你学完C语言可以玩一玩Arduino,相信你一定会喜欢的。

===========================================================================

更新:2019.07.26

           博主本身是机械专业的学生,接触代码的时间不多,但是本身也非常喜欢计算机,因为这个东西实在是太神奇了,不是吗?好像是无所不能的。如果你看过了上面的计算机科学扫盲的视频,就会知道,计算机的内部全部都是精心设计的电路,通过一层一层的抽象,最终形成了程序这个东西。博主当时才开始学的时候,也听老师这么说过,但是自己的知识还不足以理解,当时应该才学到C语言,对底层的知识一概不知,因为这时候你的认知还局限在内存(对内存很浅显的理解)。

          如果你想对底层的东西有一个比较清晰通畅的理解的话,还需要好好的学学汇编,学完汇编之后,你就会明白为什么指针那么重要了。这时候你的认知就跨在CPU内存之间了。然后再看两本小书,这两本书是《程序是怎么跑起来的》《计算机是怎么跑起来的》。这时候你的思维就活跃在整块主板之上了,如果再稍微有一点数电的知识,你就会彻底明白计算机到底怎么一回事(这个时候你会感到很通畅,当然还有很多东西还是不懂),这个时候从C语言往下的脉络就很清晰了,这个时候再往上深挖,像《数据结构》《操作系统》这些内容就可以学习了(可能还是要补一补《计算机组成原理》的知识),当然要学好还是要花很大功夫的,如果对底层结构非常感兴趣可以看一本非常牛逼的书,冬瓜哥写的《大话计算机》

         自己当初在才开始学的时候很迷茫,因为完全是自己摸索,所以有很多疑惑诸如一些:学编程要不要数学好,英语好等等(你只要会打字开机关机,就能学好编程)。

         对于大多数人来说,编程是一个新的思考方式,所以一开始不适应很正常。从一开始懵逼到开窍需要一个过程,可能非常漫长(有些人两个月就开窍了,有的人半年,有的人一年,这个说不准),一旦开窍之后,进步就会非常快。度过这个过程最简单的方式就是动手敲代码和思考(花时间独立思考),时间一到,自然而然就开窍了,所以不要急。

=============================================================================

更新:2019.11.15

大家可能听过“XXX是世界上最好的语言”,实际上的情况是每个语言都有它最适合的领域,Java适合Web,Python适合深度学习 与数据分析,C/C++适合开发底层程序,即使是汇编也会在某些对性能要求极其高的项目中用到。当然了不是说某某某语言只能干什么,只是最适合,也可以用来干其他事,只不过很费劲,很麻烦而已,而且有很大可能达不到预期的效果。

其实,扯那么多,就是想引导思考下,C语言到底适合来干什么事情,还有为什么说C/C++,C和C++到底有着什么样的关系?C语言最适合开发硬件程序,例如单片机程序,驱动程序,甚至操作系统。

之前推荐了一个太极创客的Arduino教程,Arduino就是一款单片机,这里要说的也和Arduino有关。如果已经学习了Arduino,并且想要制作自己的小制作的时候就会遇到下面问题:

            用原装的板子做电路,线路复杂容错性差。想要做专门的板子来运行Arduino程序,可是不会画PCB板,不知道如何打印PCB,不知道如何焊接元器件等等一系列的问题。这个问题也是博主之前遇到过的,这里推荐大家一个教程,手把手教你制作自己的Arduino电路板,制作电路的全过程都会涉及,包括但不限于:画原理图库和封装库,绘制原理图,绘制Pcb,打印Pcb,焊接元器件,烧录BootLoader程序等整个流程。

           链接放这里了:https://www.bilibili.com/video/av74458034(讲的非常棒!!!)学完这个视频,在自己的小项目中制作PCB电路板这个技能,自己应该可以上手了!

=============================

以前博客写的文章,放在这吧:

其实在之前写过一篇[文章](https://blog.csdn.net/C1664510416/article/details/79283512),但是也不清楚当时是怎么想的了,就是单单写相互独立的几点,并没有把自己学习的整个过程都写出来,所以一直想完整的记录一下过程。不过,已经过去了这么长时间了,只能凭着记忆来写了。

第一次接触编程是初中的时候,不过只学了一个“Hello World”就学不下去了。那时候我哥还在上大学,我说:“想学编程,你能不能给我带本书然我看看?”。我哥借了一本C语言的书,名字记不得了,是一个外国人写的,讲的倒是挺好的,看完了第一部分就迫不及待的上机了,在我哥的电脑上摸索了一个多小时,那个Hello World都没有运行起来。。。。。。当时内心是何其崩溃和绝望,至今还记得。然后我哥也看了半天,他也没找出原因。。。那时候网络还没有普及,他就带了一台电脑回来,后来我就回去继续看书,好像看到变量类型哪里看不懂了。就是这样我学不下去了,然后就一直停滞在了变量类型... ...**(所以初学一定要多上机,还有就是要找一个好请教的人,不会的立马请教,比如上论坛提问也可以,有问题就立马解决了,一直拖会把自己给拖垮的)**

后来就到大学了,之间一直没有碰过编程,但是一直保持着对计算机的兴趣。可能会有人问要不要英语好,数学好。这个问题其实分层的,就是这个问题对于程序员来说,是存在的!但是对于初学者,对于刚刚入门的人来说,根本就不存在英语好不好,数学好不好的问题。只有等你成长到了一定水平的时候,才会面对这些问题。所以,对于初学者来说,干(学)就完事了!

大一下学期,自己买了电脑,然后就又燃起学习编程的欲望了。学之前查过很多,看看到底学哪一门编程语言比较好,网上都说是C语言,也有推荐Python的,但是当时启蒙老师“[小甲鱼]( https://fishc.com.cn/forum.php )”(没错,就是那个老污龟)推荐先学C语言,然后就义无反顾的“入坑”了!

你可能有疑惑,就是为什么有那么多编程语言?现在解释给你听的话,只能打比方,你能大概体会到意思就行了。以后不断学习,自然而然就明白了。编程语言相当于工具,有些工具适合做驱动开发,内核开发,像C语言;有些工具适合做,服务器的开发像Golang;有些适合开发前端的开发像JS... ...这些语言都是人为设计的工具,每种工具都有他适合的领域。如果你听着还是很难理解的话,没关系,大致明白意思就行了,后面你自然会懂的。

而大多数人选择C语言作为入门语言是为什么呢?因为这些大多数人的人都是计算机系的,C语言构建了计算机的半壁江山,C可以说是计算机产业的[核心语言]( http://c.biancheng.net/view/1715.html )。而且后面的许多程序需要要么是用C来写成的,要么是收到C的启发。学完C之后,再学习其他的东西,都会有一种游刃有余的感觉,因为你可以隐约感觉到他们之间千丝万缕的联系。或者你也可以参考这篇[文章]( http://c.biancheng.net/view/1716.html )。

决定以C语言作为入门教程,就开始找书了,买了很多书,最后真正看的是这两本:《C语言程序设计-谭浩强(第四版)》,《C语言程序设计现代方法(第二版)》。前者入门,后者进阶。入门书能入门就行,太厚的看着都费劲,更别提学了。入门后,再用一本体系完善的书进阶。

因为是完全自学,我其实学了两遍才入门。第一遍看的翁恺的视频,老师讲的很好,不做学完没啥效果,因为单单就看视频也没上机做题。第二遍看的小甲鱼的《带你学C带你飞》,有配套的课后题,自己都认真做了,这次真的入门了。所以,初学一定上机做题,敲代码,否则想入门真的非常困难。

那些课后题可能很难,想不出来,有时候是有思路,代码写不出来,这都很正常,没思路就看答案,看完答案自己动手实现一遍,多练就行了。因为才开始学编程的话,大脑还没有适应这种“模式”,写程序对于大脑来说是一种新的表达“模式”,要慢慢适应,要有耐心。我理解的“编程思维”就是大脑表达的一种“模式”,一旦大脑“适应”了这种表达“模式”,你就拥有了“编程思维”。而这种模式不光要花时间,更重要的是“练习”,所以要多上机多敲代码。

最后,我想说这句话给你听:**过早退出是一切失败的根源!** 

 

   

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页