精神建设:为什么要学C语言以及如何学习C语言

一,为什么要学习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语言学起来并不难,其核心知识点如下:

  • ①数据类型
  • ②运算符和表达式
  • ③输入和输出
  • ④流程控制
  • ⑤函数
  • ⑥数组
  • ⑦指针
  • ⑧结构体
  • ⑨文件操作
  • ⑩内存管理

细化版:

在这里插入图片描述

相关推荐

  1. C语言如何控制输出精度

    2024-06-11 13:50:01       42 阅读
  2. C语言学习C语言

    2024-06-11 13:50:01       18 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-11 13:50:01       5 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-11 13:50:01       5 阅读
  3. 在Django里面运行非项目文件

    2024-06-11 13:50:01       4 阅读
  4. Python语言-面向对象

    2024-06-11 13:50:01       6 阅读

热门阅读

  1. 【AI赋能消费电子——COMPUTEX 2024专题】

    2024-06-11 13:50:01       24 阅读
  2. Qt_显示VTK和PCL

    2024-06-11 13:50:01       16 阅读
  3. nodejs

    nodejs

    2024-06-11 13:50:01      17 阅读
  4. linux系统的使用

    2024-06-11 13:50:01       17 阅读
  5. 选题排序(十大排序算法)

    2024-06-11 13:50:01       16 阅读
  6. python class __format__ __bytes__区别

    2024-06-11 13:50:01       17 阅读