一,为什么要学习C语言
学习C语言有以下几个重要原因:
-
基础性:C语言是一种非常基础的编程语言,它接近计算机硬件层面,让你能够更深入地理解计算机系统如何工作,包括内存管理、指针操作等。这对于构建坚实的编程基础非常重要
-
广泛使用:尽管C语言出现较早,但它依然被广泛应用于各个领域,如操作系统、嵌入式系统、游戏开发、数据库、以及各种软件的底层开发等。学会C语言可以为进入这些领域打下基础
-
性能优势:C语言是编译型语言,直接编译成机器码运行,执行效率高。在对性能有严格要求的场景中(如实时系统、高性能计算),C语言是首选
-
教育与研究:许多大学的计算机科学课程都将C语言作为入门语言教授,因为它有助于学生理解计算机底层原理。此外,在科研项目中,特别是需要高度优化代码性能时,C语言也常被采用
-
其他语言的基础:掌握C语言后,学习其他编程语言会更加容易,尤其是那些语法相近的语言(如C++、Java、Python的部分底层库就是用C编写的)。理解C语言可以帮助你更好地理解这些语言的底层运作机制
-
控制力和灵活性:C语言提供了对底层硬件的强大控制能力,程序员可以直接操作内存,实现对程序的精细控制。这种低级访问权限使得C语言在需要高度定制或优化的项目中非常有用
上面讲的过于文绉绉,俗话说起来就是:
- 学好C语言终身拿高薪。程序员是高薪岗位,C语言学的好,毕业就能进大厂拿高薪,哪怕你用其他语言工作,C是其他所有语言的基础,学好C就是打下坚实的地基,才能用其他语言盖起高楼大厦。如果没有坚实的C语言基础,不可能真正懂得计算机底层原理,工作一段时间后,必然陷入技术瓶颈,被迫转向对技术深度要求不那么高的方向。即便你最终不走技术专家的路,良好扎实的技术也能让你比其他人更有优势,更快的脱颖而出。
- 升学必备。如今接受高等教育的人越来越多,原来的高学历变成了普通学历,读个本科已经不像以前有竞争力了,研究生是高学历最低配,而升学考试必须会C语言,虽然笔试没有明确规定C语言,但操作系统、数据结构都离不开C,绝大多数的学校在复试时也会着重考察C语言能力。
二,如何学习C语言
这有一篇博客,介绍C语言学习路径,个人觉得非常棒,我就是按照这个路径学习的。结合我的经验总结下核心的几点:
1,coding
一定要coding,看和想都是假把式,学习是否有效的首要标准就是:coding的时间是不是超过60%。
请跟我一起念:
今天不coding,我就是垃圾!
今天不coding,我就是垃圾!
今天不coding,我就是垃圾!
2,写博客
坚持公开输出,把coding的代码上传到github或者码云,学习过程写成博客,包括知识点、代码、运行结果、思路、反思复盘、总结,只要用心,这个过程中你都有可能赚到大笔money。
相信我,极有可能,你的第一个100万就是这样来的!别问我怎么变现,做到以下4写,一切皆有可能:
- 写起来
- 认真写
- 坚持写
- 长期写
3,学习资源
3.1 阮一峰老师的C语言入门教程
代码仓库地址:https://github.com/wangdoc/clang-tutorial
在线阅读地址:https://wangdoc.com/clang/intro
阮一峰是个神人啊,他其实个老大不小的经济学老师,但对跨界搞IT非常感兴趣,写了很多IT技术教程,质量很高,通俗易懂,深受广大读者喜欢。
3.2 翁恺教授的C语言视频课
慕课网浙大教授《程序设计入门 C语言》,https://www.icourse163.org/learn/ZJU-199001?tid=1471228462#/learn/content。
这个课在慕课网讲了18次了,最新的可能暂时无法观看,点击图中箭头选择往期即可。
8周的课程,自学4周也就是一个月差不多了。看完这个,就具备了C语言的基础知识了,具备了登堂入室的本钱。
学完这个,可以在学习下翁恺教授的另一门C语言进阶课程https://www.icourse163.org/course/0809ZJU007B-200001?outVendor=zw_mooc_pclszykctj_
请牢记,打基础时不要有太多想法,学习曾国藩“结硬寨、打呆仗”的蠢笨精神,严格按照老师的要求一步步学习,做好下面三件事:
- 听课
- 做练习
- 做课后思考题
3.3 五个阶段从入门到精通
- ①学习基础语法
- ②学会使用 C语言自带的库函数,比如说 printf 级别的
- ③学会使用一些基本的数据结构与算法
- ④有了一定的 C语言基础,开始学习一些计算机专业的核心知识,比如说操作系统、计算机组成原理等
- ⑤动手做出一些 lab,造一些简单的轮子,实现一些简单的小应用
前两个阶段的目标在翁恺教授的两门课学完后就可以达成,第三和第四阶段需要学习数据结构、CS、计组课程,但是并非要把这些课程学精通才能进入第五个阶段,有所了解即可。
关于第五个阶段,推荐两个小lab:
-
①
可以进行加减乘除的计算器https://www.lanqiao.cn/courses/75,这个实验可以学到:计算器设计思路
、C 语言的格式检查
、C 语言输入与输出
-
②
实现一个属于自己的编程语言https://www.shiyanlou.com/courses/670,这个lab翻译自https://buildyourownlisp.com/
,英语水平足够的同学可以直接看原版,这个实验可以学到:解析器、波兰表达式、解析树的计算、S-Expression、变量定义和使用、条件判断、正则表达式、递归分析、字符串、出错处理、Q-Expression、函数、字符串
三,C语言的核心知识点
很多人说C语言很难,但是大家要知道的是C语言难在工程实践,C语言学起来并不难
,其核心知识点如下:
- ①数据类型
- ②运算符和表达式
- ③输入和输出
- ④流程控制
- ⑤函数
- ⑥数组
- ⑦指针
- ⑧结构体
- ⑨文件操作
- ⑩内存管理
细化版: