C语言怎么系统化的高效学习?

Posted HQYJ_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言怎么系统化的高效学习?相关的知识,希望对你有一定的参考价值。

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

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

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

如果你学习Java,会发现自己是在Java虚拟机上,你要是用硬件功能,除了依赖系统API之外,就没招了。
在这里插入图片描述
这也是为什么我说:你不会C语言,基本上就如同无根之草一样,因为没根基,上层建筑就是摇摇欲坠。

而在C语言这里,最为重要的一个环节是,操作系统,这个庞然大物,直接支撑了各种开发需求,调度,快速的实现功能。
而C语言的学习,基本上保持一个路线,就是没问题的:

1 基础语法

2 练习,做笔记

3 数据结构与算法

4 项目,模仿

5 操作系统

6 反编译逆向

7 设计原理

那么具体该如何学习呢?

1 基础语法

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

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

内存管理,申请释放

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

常见的库,函数

文件操作

字符串操作

作用域

指针,回调函数

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

《C primer plus》

《小甲鱼C语言》

《C与指针》
自学编程C语言不迷路,我私藏的书单分享给你!

推荐网站:
在这里插入图片描述
学编程一定要记住一点:

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

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

2 练习,做笔记

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

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

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

3 数据结构与算法

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

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

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

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

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

队列

数组

广义表

树和二叉树

查找

排序
4 项目,模仿

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

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

是否可以飞,可以发子弹,是否碰撞,宽高。
这个在理解起来就是,内部的结构,以及外部的关联。对内属性,对外方法调用。

这个如果你理解了,那么算是学成精了,进入开悟阶段。
在这里插入图片描述
这块教你一个方法,直接百度搜索 C语言 项目 源码 下载 。或者去github去搜索。
5 操作系统

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

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

进程,线程的存在

通信机制

互斥锁,消息

死锁,如何避免竞争

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

分页,分段,缓存的意义

文件系统

驱动加载

这边推荐几本书,《现代操作系统》《自己动手写一个操作系统》,我自己当时是看着一本叫做《操作系统》的书,看了很久。
这块建议看下《linux操作系统设计》,然后就去看下小型操作系统,代码少,好学习,这块可以使ucos2,freertos,去学习中断上下文,所谓的现场保护。

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

自学编程C语言不迷路,我私藏的书单分享给你!

程序员码农IT工程师自学编程计算机入门进阶学习网站大全

《计算机网络》《操作系统》《 组成原理》计算机知识该怎么个学习顺序?

6 反编译逆向

完成了操作系统,就结束了?非也。下来会进入到世界颠倒的地方。反编译。有谁会写完代码后,进行反编译看看的?如果你这么做了,你一定是高手了。
因为你进入了自我探索阶段,在开悟之后,就变成了所向披靡,而反编译就是最好的切口。

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

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

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

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

当完成了这些,会到所谓的大神阶段,就是会游刃有余的解决问题,但是还处在孙悟空的阶段,没有大彻大悟。
最后一个,我们来说下终极思维。

7 设计原理

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

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

制定规则,是在创造过程。制定规则,是具有了主导的权力,一切皆在股掌之中。
优质学习资料(免费):
C语言编程基础
夯实C语言,从小白到大牛的进阶之路!
指针
C语言实现面向对象编程
Linux C语言高级开发
必备Linux命令和C语言基础
**学习交流群:**832788349

以上是关于C语言怎么系统化的高效学习?的主要内容,如果未能解决你的问题,请参考以下文章

非计算机专业如何高效学习C语言

c语言是什么鬼?为什么我要学c语言?万能的c语言也有缺点?该如何高效学习c语言?

编程语言演变历史

怎么用最短时间高效而踏实地学习Python?

怎么才能最短时、高效、踏实的学习 Python?

编程的演变历史