我是如何自学C语言的(一个菜鸟的学习路)
零基础扫盲课计算机科学速成课扫盲课:【计算机科学速成课】40集全/精校- Crash Course Computer Science_哔哩哔哩_bilibili简介这个视频会以自下而上的方式给你介绍整体计算机行业的各项知识这样初学者对整个计算机的概貌就能有一个全面的了解会知道自己现在所学的知识处在计算机知识体系的哪一层视频讲的非常好推荐刚刚入门的学习好好看看。如果有一定的基础看起来会格外通畅。---------------------------------------------------------------------------------------------------------------------------更新2018/10/13由于百度分享链接经常失效所以把网盘中的链接整理出来方便大家查看。 1.Mark 编程先导课也可以只看上面的 零基础扫盲课链接https://pan.baidu.com/s/1tz_IDqtiE0lGoQD-oMMqzQ提取码zeri 2.翁恺 C语言程序设计【C语言】翁恺C语言程序编程全系列3.小甲鱼 带你学C带你飞【C语言】《带你学C带你飞》_哔哩哔哩_bilibili4.小甲鱼 汇编语言【汇编入门】《零基础入门学习汇编语言》_哔哩哔哩_bilibili书用王爽老师的《汇编语言》学习路线1.按照序号来学习计算机科学是 Po学校 Mark老师的课程很精辟实用耐下性子看完会对你学编程有很好的帮助作用。这个和上面的计算机科学速成课类似但是更直接更精炼2.两个C语言教程是有目的的。第一个翁恺老师的我推荐速看速看不是不思考而是一天看一章把它看完快速看掉因为这一遍会在你的脑海里留下一个C语言的框架这很重要。入门的书谭浩强C语言教程第四版别听网上说这本书不好【确实有错误的地方】 这本书对于初学者来说是最适合的在指针那块讲的挺好的。里面的编程风格啥的小甲鱼老师会纠正的。---》个人观点3.然后细看小甲鱼的视频去鱼C论坛做课后题每一题都要做不会的在论坛提问很快会有人回复你的论坛的学习氛围很好。4.学完对指针可能还有困惑你想完全掌握指针的最好办法就是学会汇编所以第四个是汇编语言。汇编还有会让你对C语言有更深层次的领悟5.坚持坚持坚持有些东西刚开始接触搞不懂很正常坚持学下去学到后面你就明白了。有时在敲代码的时候某个知识点突然就懂了很多人搞不懂就放弃了不学了这是最可惜的。所以那些大牛们都是很有毅力坚持到最后的人。6.C语言开发项目实战http://c.biancheng.net/cpp/u/xiangmu/ 感觉自己学的差不多了就来操练一个项目吧学完C就可以开始动手做了---------------------------------------------------------------------------------------------------------------------------带我入门的鱼C论坛http://bbs.fishc.com/forum.php---------------------------------------------------------------------------------------------------------------------------首先本人也是一个菜鸟目前依然还在学习当初在我开始自学C语言的时候走过了好多弯路如果你看到这篇文章希望你不要走我走过的弯路这也是我写这篇文章的目的我也不想像老头子一样叨叨叨哪些要做哪些不要做好像自己很牛逼一样。我只是把自己觉得是坑是弯路的地方结合自己的看法复述给你听希望你有自己的理解。1. 不停的换教程我总觉得自己正在学的教程没有把我给讲懂就认为这教程不行后来慢慢的深入了之后才发现教程大体上都是差不多的并不是教程讲的不好而是本来应该自己花时间去思考的东西认为应该是由老师来讲的所以即使再好的教程我也觉得不怎么样当然也有很差的教程就是特别啰嗦的说半天说不到点子上的这种视频就不要看了。还有书入门的书我买了好几本到最后真正看的只有一本就是谭浩强的那本。虽然这本评价不是很高但是确实是这本书带我入门的。我当初的入门书是谭浩强的《C语言程序设计》第四版指针部分讲的通俗易懂非常形象。教程是小甲鱼的叫做《带你学C带你飞》。当初自己就应该完整学完一本书和一套教程你在学习的不同阶段对知识和体系的理解是不一样的这也是为什么在计算机学习中囫囵吞枣是一个褒义词了。换了那么多书和教程实在是浪费时间现在想想挺后悔的。2. 下载各式各样的教程我看见名字牛哄哄的教程就会把它保存到百度云盘里然后下载到电脑上典型的教程收集狂我的电脑硬盘几乎是满的我电脑里有800G左右的视频教程每天看着这些个教程就好像看着满大箱的金元宝感觉自己好有钱像 渗透测试WEB安全逆向破解看着就叫人热血沸腾哪里还有兴趣学C语言恨不得直接上 渗透测试。当然这是不可能的万丈高楼平地起C语言都没学会谈何这些呢这些电脑里的教程让我越来越浮躁一天我不知哪里来的想法把电脑里这个阶段没学到的“高深教程”全都给删除了顿时感觉世界都清净了专心学基础的接下来的这段时间我专心了不少这些教程给了我莫大的学习计算机的动力也耗费了不少精力去胡思乱想万丈高楼平地起专注很重要3. 不动手只用眼睛看我刚开始学的时候觉得教程讲的我都听得懂干嘛还要敲一遍代码然后到自己写作业的时候就是各种出错天花乱坠的错误输入法错了啊关键字打错了啊少一个括号啊崩溃然后我再也不敢怠慢了该自己敲一遍的代码就自己好好打一遍。还是会出错各式各样的错误很蛋疼过了两个星期左右我就明显的感觉自己的错误变少思路也更清晰了到最后要学完的时候有一个作业是做一个简易通讯录的程序一百多行的代码我敲完顺利编译运行没有错误如果我一直偷懒不动手是不可能达到的。现在想想编程也是一个不断试错的过程一开始学的时候是不断纠正自己的错误因为开始的程序都是简单的。到后来程序越来越复杂了就是找程序的错误如果自己的错误都没有解决何谈后面解决程序的错误呢4.我这个人喜欢刨根问底应该有很多才入门的朋友和我差不多总想把东西彻底搞明白再学下面的东西。这种习惯其实是非常好的但是在学计算机方面的东西有点不现实因为有些知识是要你有一定的基础之后才能理解的。当初我记得自己一直纠结常量和常变量有什么区别问了老师。老师也没把我讲明白后来学到内存自然而然的就懂了。所以我建议不懂的知识先囫囵吞枣先吃下去。最后回过头来就自然而然就消化了。5. 一开始我听老师说编程主要学的是其中的思想听完自己感觉挺轻松认为学思想不就是听听课没作业吗所以没有吧课后作业当回事。过了几天继续上课听老师讲直接听不懂了。后来还是和一个学长交流他说课后作业很重要这是一个巩固的过程将自己的知识用起来这样就能更好的理解了这也是一个反馈的过程。反馈非常重要通过作业写出一行行的代码直到顺利运行是一件很有成就感的事情更能够激励自己去学习学长讲的挺有道理的我也听进去按照他说的操作了自己实践证明写课后题确实是一个很好的巩固和反馈的方法自己当初就是不专注眼高手低懒才浪费了那么多时间现在想想其实也挺可贵的毕竟是一段难忘的经历但还是希望看到这篇文章的朋友别走我走过的坑。-------------------------------------------------------------------------------------------------------------------更新2019.02.27强烈推荐一个免费良心的Arduino教学网站太极创客太极创客 – Arduino, ESP8266物联网的应用、开发和学习资料内容超详细讲的深入浅出谁听谁知道太极创客讲的C面向对象编程基础讲的非常好结合Arduino开发实例如果你学完了C对C面向对象编程有兴趣不妨先看看他们的课作为入门资料是非常不错的。说实话学C语言其实挺枯燥的学完了也不知道干啥。本身自己是学机械所以对硬件特别感兴趣所以经常做一些小制作但是这些小制作都很没啥技术含量。我当时就想学单片机来着于是就上网找学习路线无意中就关注到Arduino这是一款开源微控制器看着像玩具实际功能很强大。淘宝上十几块就可以买到了一个入门的板子当时挺感兴趣就买了一块而且它是C语言来开发的并且集成了大量的库我们可以用很少的代码实现我们想要的功能总之非常好玩。如果你也喜欢小制作我推荐你学完C语言可以玩一玩Arduino相信你一定会喜欢的。更新2019.07.26博主本身是机械专业的学生接触代码的时间不多但是本身也非常喜欢计算机因为这个东西实在是太神奇了不是吗好像是无所不能的。如果你看过了上面的计算机科学扫盲的视频就会知道计算机的内部全部都是精心设计的电路通过一层一层的抽象最终形成了程序这个东西。博主当时才开始学的时候也听老师这么说过但是自己的知识还不足以理解当时应该才学到C语言对底层的知识一概不知因为这时候你的认知还局限在内存对内存很浅显的理解。如果你想对底层的东西有一个比较清晰通畅的理解的话还需要好好的学学汇编学完汇编之后你就会明白为什么指针那么重要了。这时候你的认知就跨在CPU与内存之间了。然后再看两本小书这两本书是《程序是怎么跑起来的》《计算机是怎么跑起来的》。这时候你的思维就活跃在整块主板之上了如果再稍微有一点数电的知识你就会彻底明白计算机到底怎么一回事这个时候你会感到很通畅当然还有很多东西还是不懂这个时候从C语言往下的脉络就很清晰了这个时候再往上深挖像《数据结构》《操作系统》这些内容就可以学习了可能还是要补一补《计算机组成原理》的知识当然要学好还是要花很大功夫的如果对底层结构非常感兴趣可以看一本非常牛逼的书冬瓜哥写的《大话计算机》。自己当初在才开始学的时候很迷茫因为完全是自己摸索所以有很多疑惑诸如一些学编程要不要数学好英语好等等你只要会打字开机关机就能学好编程。对于大多数人来说编程是一个新的思考方式所以一开始不适应很正常。从一开始懵逼到开窍需要一个过程可能非常漫长有些人两个月就开窍了有的人半年有的人一年这个说不准一旦开窍之后进步就会非常快。度过这个过程最简单的方式就是动手敲代码和思考花时间独立思考时间一到自然而然就开窍了所以不要急。更新2019.11.15大家可能听过“XXX是世界上最好的语言”实际上的情况是每个语言都有它最适合的领域Java适合WebPython适合深度学习 与数据分析C/C适合开发底层程序即使是汇编也会在某些对性能要求极其高的项目中用到。当然了不是说某某某语言只能干什么只是最适合也可以用来干其他事只不过很费劲很麻烦而已而且有很大可能达不到预期的效果。其实扯那么多就是想引导思考下C语言到底适合来干什么事情还有为什么说C/CC和C到底有着什么样的关系C语言最适合开发硬件程序例如单片机程序驱动程序甚至操作系统。之前推荐了一个太极创客的Arduino教程Arduino就是一款单片机这里要说的也和Arduino有关。如果已经学习了Arduino并且想要制作自己的小制作的时候就会遇到下面问题用原装的板子做电路线路复杂容错性差。想要做专门的板子来运行Arduino程序可是不会画PCB板不知道如何打印PCB不知道如何焊接元器件等等一系列的问题。这个问题也是博主之前遇到过的这里推荐大家一个教程手把手教你制作自己的Arduino电路板制作电路的全过程都会涉及包括但不限于画原理图库和封装库绘制原理图绘制Pcb,打印Pcb焊接元器件烧录BootLoader程序等整个流程。链接放这里了Altium Designer 学习-----手把手绘制Arduino PCB线路板零基础_哔哩哔哩_bilibili讲的非常棒学完这个视频在自己的小项目中制作PCB电路板这个技能自己应该可以上手了2021.08.10更新小甲鱼老师《带你学C带你飞》的后续课程补充帮老污龟填一下坑以前博客写的文章放在这吧其实在之前写过一篇(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带你飞》有配套的课后题自己都认真做了这次真的入门了。所以初学一定上机做题敲代码否则想入门真的非常困难。那些课后题可能很难想不出来有时候是有思路代码写不出来这都很正常没思路就看答案看完答案自己动手实现一遍多练就行了。因为才开始学编程的话大脑还没有适应这种“模式”写程序对于大脑来说是一种新的表达“模式”要慢慢适应要有耐心。我理解的“编程思维”就是大脑表达的一种“模式”一旦大脑“适应”了这种表达“模式”你就拥有了“编程思维”。而这种模式不光要花时间更重要的是“练习”所以要多上机多敲代码。最后我想说这句话给你听**过早退出是一切失败的根源!**