---
title: 👏下载→阮一峰C语言入门教程
shortTitle: 👏下载→阮一峰C语言入门教程
category:
  - 学习资源
tag:
  - 学习资源
description: 给操作系统学习资料下载
head:
  - - meta
    - name: keywords
      content: C语言教程,阮一峰,阮一峰 C语言,C语言入门教程
---

给大家报告下，阮一峰老师的《**C语言入门教程**》于 2021 年 9 月 7 日上线了！

对，和往常一样，这个教程是开源的，采用知识共享许可证，源码托管在 GitHub，大家可以自由使用。

>[https://github.com/wangdoc/clang-tutorial](https://github.com/wangdoc/clang-tutorial)

在线阅读地址也有：

>[https://wangdoc.com/clang/](https://wangdoc.com/clang/)

我第一时间就拜读了一遍，受益匪浅！可以说目前我见到的最好的 C语言入门教程了，没有之一！

要知道，国内的绝大多数高校，大一都会安排 C 语言这门课，教材通常会选择谭浩强的C语言程序设计，但这本书在网上的风评极差。

而阮一峰老师的作品，想必大家都有所耳闻，硬核的同时，又通俗易懂，深受广大读者的喜欢。

福音啊！我要狂吹阮一峰了老师的这份《**C语言入门教程**》。

考虑到很多小伙伴喜欢 PDF 版的，我就立马给准备了！


需要的小伙伴请扫描下方的二维码关注作者的原创公众号「**沉默王二**」回复关键字「**08**」就可以拉取到下载链接了。

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

也可以微信搜「**沉默王二**」关注后回复关键字「**08**」。


之前给大家推荐的学习 C语言的视频教程有浙大翁恺教授的《C语言程序设计》，在 B 站上和中国大学慕课网上都可以看得到。

那配上阮一峰老师的这个在线文档教程，可以说是完美！


![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/download/yuanyifeng-c-language-4a28a9bd-0db4-419c-8aaf-fa102323282d.png)

我对这份教程是非常满意的，该讲的地方都讲到了，示例也给了很多，对初学者来说，完全够用了。

阮一峰老师在写这份《C语言入门教程》的时候还是花费了很多心思的，因为 C 代码的写法实在是太自由了，而平常工作中又确实很少有机会写 C 代码，所以前前后后花了 6 个多月的时间。



C语言最初是作为 Unix 系统的开发工具而发明的。1972年，丹尼斯·里奇和布莱恩·柯林汉在 B 语言的基础上重新设计了一门新语言，这种新语言取代了 B 语言，所以称为 C 语言。

1973年，整个 Unix 系统都使用了 C 语言重写。此后，C 语言开始快速流传，广泛用于各种操作系统和系统软件的开发。

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

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

C语言对程序员的限制很少，它假设程序员知道自己在干嘛，不会限制程序员做各种骚操作，想干嘛就干嘛，反正后果自负，哈哈哈。

C语言的哲学就是“极度相信程序员，不妨碍他们做事”，所以，C语言让程序员自己管理内存，没有垃圾回收功能，也不提供类型检查、数组下标范围检查、指针位置检查等防御措施。

表面上看，这似乎很危险，但对于有一定水平的程序员来说，简直就是福音，大胆去编程，解放生产效率就对了。

另外一方面，C语言的 debug 不是很容易，写代码的时候必须要富有缜密的逻辑性，一旦出错，是很难找补的。

C语言在武林界的地位就相当于少林的地位，天下武功皆出少林，很多流行的编程语言都是以 C语言为基础的，比如说C++、Java、C#、JavaScript 等等，有了 C语言的基础，再学习这些语言都会有很大帮助。

经过多年的发展，C语言有蛮多版本的，1999 年 C99 是目前最流行的 C 版本。

常见的 C 语言编译器是自由软件基金会推出的 GCC 编译器，它可以免费使用。Linux 和 Mac 系统可以直接安装 GCC，Windows 系统可以安装 MinGW。

不过网上也有蛮多在线编译器的，可以直接在网页上模拟运行 C 代码，查看结果，非常方便。

![](http://cdn.tobebetterjavaer.com/tobebetterjavaer/images/download/yuanyifeng-c-language-4dfd8f91-893f-401f-81ad-488e08934c07.png)

>CodingGround网址：[https://www.tutorialspoint.com/compile_c_online.php](https://www.tutorialspoint.com/compile_c_online.php)

C 语言是一种编译型语言，源码是文本文件，本身是无法执行的，需要通过编译器，生成二进制的可执行文件。

编译器将代码从文本翻译成二进制指令的过程，被称为编译阶段，又称为“编译时”（compile time），跟运行阶段（又称为“运行时”）相区分。

C语言中，指针是令初学者头痛的一块内容，所以我这里简单给大家聊两句。

**指针是什么？它是一个值，这个值代表一个内存地址，因此，指针就相当于指向某个内存地址的路标**。

字符*表示指针，通常跟在类型关键字的后面，表示指针指向的是什么类型的值。比如，`char*`表示一个指向字符的指针，`float*`表示一个指向float类型的值的指针。

*这个符号除了表示指针以外，还可以作为运算符，用来取出指针变量所指向的内存地址里面的值。

而&运算符用来取出一个变量所在的内存地址。

背会理解了这几句，可以说指针的理论基础就有了。跨过去指针这一关，C 语言最硬核的部分也就掌握了。

>需要阮一峰老师的这份《C语言入门教程》的小伙伴请扫描下方的二维码关注作者的原创公众号「**沉默王二**」回复关键字「**08**」就可以拉取到下载链接了。

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

也可以微信搜「**沉默王二**」关注后回复关键字「**08**」。

OK，今天就简单聊到这里，希望阮一峰老师的这份教程能帮助到大家。我们下期见~
