---
star: true
title: 2022最新超详细C语言学习路线（建议收藏🔥）
shortTitle: C语言学习路线
category:
  - 学习路线
tag:
  - C语言
  - C语言学习路线
description: 写这篇文章来给大家讲C语言的学习，当然是希望大家真正的学会、学懂C语言，并能够真正感觉到它的用处。
head:
  - - meta
    - name: description
      content: 写这篇文章来给大家讲C语言的学习，当然是希望大家真正的学会、学懂C语言，并能够真正感觉到它的用处。
  - - meta
    - name: keywords
      content: C语言,C语言学习路线
---


我花时间写这篇文章来给大家讲C语言的学习，当然是希望大家真正的学会、学懂C语言，并能够真正感觉到它的用处。

我们先从 C 语言的入门开始，总共**一本书，两门视频课**。

### 01）阮一峰老师的 C语言入门教程

阮一峰老师的 C语言入门课，我第一时间就拜读了一遍，受益匪浅！可以说目前我见到的最好的 C语言入门教程了，没有之一！国内的绝大多数高校，大一都会安排 C 语言这门课，阮一峰了老师的这份《C语言入门教程》，绝对是福音。

我第一时间就整理了一份 PDF 版，截个图大家可以感受下。我对这份教程非常满意，该讲的地方都讲到了，示例也给了很多，对初学者来说，入门必备。

![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xuexiluxian/c-1.png)

直接长按识别/扫描下方二维码，关注后回复 「**08**」 下载这份 PDF 吧：

![扫码关注后回复「08」关键字](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/gongzhonghao.png)



### 02）翁恺教授的C语言视频课

可以先看阮一峰老师的《C语言入门教程》，也可以先花一个月的时间，去 mooc 把《程序设计入门 C语言》这门视频课过一遍。

![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xuexiluxian/c-2.png)

>视频地址：[https://www.icourse163.org/course/ZJU-199001](https://www.icourse163.org/course/ZJU-199001)

看完这套视频，大家至少能学到：

![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xuexiluxian/c-3.jpg)


学完这门入门课后，可以再看一下进阶版的。课程以一个 Windows 下的图形游戏程序入手，借助一个 C 语言图形库，展开全部的教学内容，非常有趣。

>视频地址：[https://www.icourse163.org/course/ZJU-200001](https://www.icourse163.org/course/ZJU-200001)

这里给大家一点看视频的小建议哈。

老老实实听课，做笔记，严格按照翁恺老师的要求完成作业。如果还有余力，那么考虑一下课后的思考题。如果没有思路，先看一下别人的讨论，然后渐渐学会自己总结。

**没有学不会的 C 语言，只有不对的学习姿势**。


### 03）为什么要学习 C语言？

很多初学者会感到困惑，C 语言既然工作岗位不多，为什么还要学习呢？学习 C语言能做什么？如果这两个问题搞不清楚的话，学习的过程中就容易脱靶。

C语言是由贝尔实验室的 Dennis Ritchie 在 1969 年~ 1973 年间发明创造的。

![C语言之父](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xuexiluxian/c-1.jpg)

Dennis Ritchie是这样评价自己的亲儿子的：“**古怪的、有缺陷的，但同时也是一个巨大的成功**。”这句评语还是非常中肯的。

**第一，C语言在计算机领域起到了承上启下的作用**。

![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xuexiluxian/c-4.jpg)

C语言非常的简洁，几乎没有任何冗余。上手难度几乎为 0，除了指针难以被新手掌握以外，其他的基础语法都很容易上手。很多编程语言都受到了C语言的影响，比如说 Java、C++、C#、Python、Go 等等，那学会了 C语言，再学习其他的编程语言就会丝滑得多。

另外，大部分 Unix 内核，以及所有支撑工具和函数库都是用 C语言来编写的。以至于后来几乎所有的操作系统内核都用到了C语言，比如说 Windows、Linux、macOS 等等。那学会了 C语言，就可以学习计算机组成原理、操作系统等等偏基础的计算机基础知识。

《指环王》里有这样一句话：“one ring to them all”，可以把 ring 换成 language，这个 language 就是C语言。


**第二，C语言可以用于嵌入式系统的开发**

除了用于计算机操作系统的编写，C语言现在主要用于嵌入式系统的开发，汽车、照相机、家用电器等设备的底层系统都是用 C 语言编写的。

C语言能够直接操作硬件、管理内存、跟操作系统交互，这使得它成为了一种非常接近底层的编程语言，非常适合有极高性能要求的程序。

![MATLAB+C语言来控制机械臂](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xuexiluxian/c-2.jpg)


**04）C语言核心知识点汇总**

为了方便大家的学习，我这里汇总一下 C语言的核心知识点。先来看文字版的：

- 数据类型
- 运算符和表达式
- 输入和输出
- 流程控制
- 函数
- 数组
- 指针
- 结构体
- 文件操作
- 内存管理

再来看详细版的思维导图：


![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xuexiluxian/c-5.png)


C语言有两个关键部分：

第一是语法：也是入门教材里最看重的内容，也就是那些变量、数据类型、分支判断、循环、函数、指针等等。

第二是函数库：简单来说，函数库就是别人编写好的 C 函数，你可以直接拿来调用，比如说调用 `printf()` 函数就可以在屏幕上打印。很多人可能觉得库函数不重要，都是别人封装好的，只要记住函数名就可以了，但其实我想表达的是，库函数才是你学习 C语言并将其应用于实践的关键。

因为学会调用别人的库函数（例如malloc函数、calloc函数、realloc函数、free函数），才有机会写出自己的库函数，否则从零开始撸实在是太不现实了。


**05）学习 C语言的一些建议**

一般来说，学习 C语言可以分为以下 5 个阶段：

- 1）学习基础语法
- 2）学会使用 C语言自带的库函数，比如说 printf 级别的
- 3）学会使用一些基本的数据结构与算法
- 4）有了一定的 C语言基础，开始学习一些计算机专业的核心知识，比如说操作系统、计算机组成原理等
- 5）动手做出一些 lab，造一些简单的轮子，实现一些简单的小应用

这里推荐 2 个蓝桥云课上的免费小 lab，大家可以动手练起来。

**1）可以进行加减乘除的计算器**

![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xuexiluxian/c-6.jpg)

>课程地址：[https://www.lanqiao.cn/courses/75](https://www.lanqiao.cn/courses/75)


通过这个 lab，大家可以学到：

* 计算器设计思路
* C 语言的格式检查
* C 语言输入与输出


**2）实现一个属于自己的编程语言**


![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xuexiluxian/c-7.png)


>课程地址：[https://www.shiyanlou.com/courses/670](https://www.shiyanlou.com/courses/670)

通过这个 lab，大家可以学到：

* 解析器
* 波兰表达式
* 解析树的计算
* S-Expression
* 变量定义和使用
* 条件判断
* 正则表达式
* 递归分析长字符串
* 出错处理
* Q-Expression
* 函数
* 字符串

这个 lab 翻译自国外的 build your own lisp：

>[https://buildyourownlisp.com/](https://buildyourownlisp.com/)

如果英语功底比较扎实的话，可以直接看原版。

![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xuexiluxian/c-8.png)


认真跟着做这些 lab，真本领就学到手了。

**06）学习 C语言的其他资源**

给初中生看的《啊哈 C语言》，简单易懂，生动有趣，虽然只能学到 C语言的冰山一角，但也值了。

![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xuexiluxian/c-9.png)


给高中生、大一新生看的入门书《c primer plus》，语法全覆盖，细节多，知识点讲的清楚，缺点是琐碎，细节弯弯绕。


![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xuexiluxian/c-10.png)


还有一本《C 程序设计语言》，这本书的作者是 C语言之父，所以全书讲的都是 C语言的核心。代码示例大多都是库函数的实现方法，内容简洁明了，干净利落，没有废话。

![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xuexiluxian/c-11.png)


给
- 想成为大佬的人
- 想进阶 C语言
- 想理解指针和内存
- 想搞懂 Linux 内核
- 想搞基础设备的
- 想搞单片机的
- 想进微软改进 Windows 的
- 想搞贴近生活硬件的，比如说闹钟、计时器、简单的机器人

看的进阶书《C 陷阱与缺陷》、《C 专家编程》、《C 和指针》

![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xuexiluxian/c-12.png)

尽管我不推荐大家看书入门，但我知道很多读者还是喜欢通过看书的方式学习。直接长按扫描下方二维码，关注后回复 「**C**」 下载这 PDF 版吧：

![（长按扫码识别）](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/gongzhonghao.png)


更多 C语言的学习资料，可以直接戳我整理的这个 GitHub/码云仓库——📚程序员必读书单整理，附下载地址，里面有大量的 C语言学习资料。

- GitHub 地址：[https://github.com/itwanger/JavaBooks](https://github.com/itwanger/JavaBooks#c)
- 码云地址：[https://gitee.com/itwanger/JavaBooks](https://gitee.com/itwanger/JavaBooks#c)

![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xuexiluxian/c-books.jpg)

简单罗列一下：

- 深度探索C  对象模型
- 数据结构与算法分析--C语言描述
- C Primer Plus（第五版） 
- C程序设计语言（第二版，中文版）
- C和指针
- C陷阱与缺陷
- C专家编程

-------

到此为止，C语言的重点就全部划出来了，剩下的学习就交给大家了。最后，二哥再唠叨几句：

1、自学才是硬道理。强大的自学能力是独自解决问题的根本，程序员需要拥有强大的自学能力。

2、一个人可以走得很快，但一群人才能走的更远。最好加入一些有氛围的技术交流群，结交一两个有能力的同阶段的人，切磋精进一下。

3、入门阶段，coding 为主，视频为辅，不要搞反了。记住这个公式：只看+不练=假把戏。

4、如果以后不想当一个优秀的工程师，不想在计算机这条道路上走得更远，只想躺平当个平平淡淡的码农，那么我推荐一条路：跟着老师一步步走，跟着大学的教学方案，一步步走就行了。

上面这4条建议其实不仅适用于C语言的学习，还适用于其他任何一门编程语言的学习。如果能够这样坚持下去，几年后，你将是一名善于解决实际问题的工程师，而不是一名普普通通的码农。

以上，希望能帮助到大家！

*没有什么使我停留——除了目的，纵然岸旁有玫瑰、有绿荫、有宁静的港湾，我是不系之舟*。


![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/xingbiaogongzhonghao.png)





