新闻  |   论坛  |   博客  |   在线研讨会
C语言怎么系统化的高效学习?
编码之外 | 2021-05-07 00:18:20    阅读:838   发布文章

今天给大家分享一个学习路线,也算是给这段时间C语言系列的一个总结,大家按图索骥,能够飞快的掌握C语言。


C语言指针很难学?给你最直接的解决思路!


首先我想说下,C语言是非常重要的语言。为什么这么说呢?原因在于C语言是连接了硬件和软件的桥梁。


如果你学习Java,会发现自己是在Java虚拟机上,你要是用硬件功能,除了依赖系统API之外,就没招了。



这也是为什么我说:你不会C语言,基本上就如同无根之草一样,因为没根基,上层建筑就是摇摇欲坠。



而在C语言这里,最为重要的一个环节是,操作系统,这个庞然大物,直接支撑了各种开发需求,调度,快速的实现功能。


而C语言的学习,基本上保持一个路线,就是没问题的:


1 基础语法

2 练习,做笔记

3 数据结构与算法

项目,模仿

5 操作系统

6 反编译逆向

7 设计原理


那么具体该如何学习呢?


1 基础语法


  • 学习简单的语法,if switch while ,各种变量声明,函数定义

  • 简单数据结构,链表指针操作

  • 内存管理,申请释放

  • 结构体使用,typedef ,#define 使用

  • 常见的库,函数

  • 文件操作

  • 字符串操作

  • 作用域

  • 指针,回调函数


推荐书籍:(更多书籍文末免费获取)


  • C primer plus

  • 小甲鱼C语言

  • C与指针




推荐网站:



https://www.runoob.com/cprogramming/c-tutorial.html


视频教程:



https://www.bilibili.com/video/BV1TT4y1F7Z9?from=search&seid=17613620503982455285


https://www.bilibili.com/video/BV17s411N78s/?spm_id_from=333.788.recommend_more_video.0


全部视频清单,关注公众号 程序员入门进阶 后台回复 C语言视频我最棒  获取全部链接。


学编程一定要记住一点:


语法永远只是基础,不是能力。如果你听见谁说它学会了哪个语法,却不会做项目,那么基本上等于白瞎,没啥用,只是刚入门而已。


程序员之间的薪资差距,主要来自于一些抽象的能力,比如创造力,沟通力,解决问题的能力。


2 练习,做笔记


练习,第一个是所谓的课后题,多练习,把语法熟练的掌握,再一个就是去做笔记,把学到的知识进行归类,总结。


很多人会有一个困惑,自己学了就忘了,等于没学。这个解决方式就是做笔记,加深印象。


只看不做,基本白瞎的。一定要去动手,去调试,用VS开发或者codeblocks,都是没问题的,如果你喜欢Linux,可以装个虚拟机,或者cygwin去编程。


一些练习题:

https://www.runoob.com/cprogramming/c-100-examples.html


视频讲解:


https://www.bilibili.com/video/BV1ur4y1c7d2?from=search&seid=13029503385076204138


C语言# ##看的头蒙?以实际应用场景剖析它!


3 数据结构与算法


当你学习完语法,或者是在学习的过程中,会遇到比较困惑的内容,就是不知道如何描述物体,如何设计,这个原因是语法掌握了之后,这些东西都是零散的,不成系统,你不会用。


当你用的时候,绕不过去的一个知识,就是数据结构与算法,因为这两个合起来就是写程序了。


一个物体描述出来,就是一个结构体,或者联合体,然后通过一些函数调用,操作,影响数据,最终提通过界面显示,或者终端输出,完成整个过程。


于是C语言学习语法完后,就是学数据结构与算法,一定要记得这个学完,才是入门了,才能真正的做项目了。


这里主要学习哪些知识呢?


  • 线性表


  • 队列

  • 数组

  • 广义表

  • 树和二叉树


  • 查找

  • 排序


书籍文末可以找到,视频这里分享几个:



https://www.bilibili.com/video/BV1Ut411g76f?from=search&seid=4659630938965125971



https://www.bilibili.com/video/BV1xK4y1U7Dc?p=4


项目,模仿


上面的这些学习完后,就要开始做项目了。而做项目的技巧是什么?先去找案例,教程学习,项目实战。


当我们看完一个后,学会了如何去分析,开发一个新的项目。比如,如何描述一架飞机,它有哪些参数,哪些方法。


是否可以飞,可以发子弹,是否碰撞,宽高。


这个在理解起来就是,内部的结构,以及外部的关联。对内属性,对外方法调用。


这个如果你理解了,那么算是学成精了,进入开悟阶段。


这块教你一个方法,直接百度搜索 C语言 项目 源码 下载 。或者去github去搜索。


更多内容,记得关注公号 :程序员入门进阶。



5 操作系统


当这个阶段完成后,后面就进入所谓的操作系统阶段,这个迈过去了,就是开悟之坡的封神阶段,会进入真正的辉煌阶段。


而关于操作系统,要学习哪些知识呢?


  • 操作系统的概念

  • 进程,线程的存在

  • 通信机制

  • 互斥锁,消息

  • 死锁,如何避免竞争

  • 虚拟内存,进程间不可直接访问

  • 分页,分段,缓存的意义

  • 文件系统

  • 驱动加载


这边推荐几本书,《现代操作系统》《自己动手写一个操作系统》,我自己当时是看着一本叫做《操作系统》的书,看了很久。


这块建议看下《linux操作系统设计》,然后就去看下小型操作系统,代码少,好学习,这块可以使ucos2,freertos,去学习中断上下文,所谓的现场保护。


如果这块学的不错了,在进阶一下,进入微指令,计算机组成原理,深入到计算机硬件这块,会给你带来质的飞跃。




6 反编译逆向


完成了操作系统,就结束了?非也。下来会进入到世界颠倒的地方。反编译。有谁会写完代码后,进行反编译看看的?如果你这么做了,你一定是高手了。


因为你进入了自我探索阶段,在开悟之后,就变成了所向披靡,而反编译就是最好的切口。


这里推荐几本书:《C++反编译》《加密与解密》,加密与解密解决所谓的PE结构这些,说到这里又想起来了,《程序员的自我修养》《链接器与加载器》,一定要去读,太经典了。


这块我当时使用的是OD破解器,现在IDa,做一些分析学习(现在不输出这类内容了,自己探索乐趣无穷,不想被烦扰)


当你看到代码,能够看到的是它的流动,就像侠客行里面,最后石中玉看到蝌蚪文的那个感觉,各个经络活跃起来,感受到代码在流淌,而不是静态的,这时候你才是真的热爱编程。


这也是我喜欢的一个状态,一个在代码世界的屠龙少年。


当完成了这些,会到所谓的大神阶段,就是会游刃有余的解决问题,但是还处在孙悟空的阶段,没有大彻大悟。


最后一个,我们来说下终极思维。


7 设计原理


虚实结合,创造系统,这个才是最终跳出束缚,完成所谓的天眼过程。所谓你永远看不到真相,因为你一直在真相里面。


要想真正打通,最终完成的是所谓的设计,比如操作系统架构设计,模型,物联网模型,协议,这些是在制定规则。


制定规则,是在创造过程。制定规则,是具有了主导的权力,一切皆在股掌之中。


好了,今天就聊这么多,更多内容,敬请期待!


帮发转发文章,便是最大的支持!


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客