大一新生应该如何学习C语言,书上代码看不懂理解不了怎么办?(1)

简介: 大一新生应该如何学习C语言,书上代码看不懂理解不了怎么办?

大家好,我是二哥呀!


昨天有个读者问我要 C语言的学习路线,他今年刚上大一,书上的代码完全看不懂。


讲真,大一新生,一般都是零基础的纯小白,看不懂书上的代码很正常,除非是小学、初中、高中就开始卷计算机的硬核少年;或者是因为教材选的有问题。


那刚好二哥之前整理过一些学习 C语言的资料和学习方法,今天趁这个机会就再做个汇总和梳理。


推荐一本书,两门视频课,若干学习建议,看完后如果还看不懂、理解不了C语言,过来骂我、捶我,只要不要打脸就行。


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


这个教程是开源的,采用知识共享许可证,源码托管在 GitHub,可以放心食用。


GitHub 地址:https://github.com/wangdoc/clang-tutorial


在线阅读地址:https://wangdoc.com/clang/

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


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


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



CodeChina 上的仓库镜像不知道为什么被删除了,只好贴码云的了:https://gitee.com/itwanger/JavaBooks


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


可以花一个月的时间,去慕课网把《程序设计入门 C语言》这门视频课过一遍。


视频地址:https://www.icourse163.org/course/ZJU-199001

看完这套视频,大家至少能学到这些:


image.png


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


视频地址:https://www.icourse163.org/course/ZJU-200001

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


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


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


03)为什么要学习 C语言?


为什么要学习 C语言?学习 C语言能做什么?如果这两个问题搞不清楚的话,学习的过程中就容易脱靶。


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




Dennis Ritchie是这样评价自己的亲儿子的:“古怪的、有缺陷的,但同时也是一个巨大的成功。”的确,C语言的指针不知道劝退了多少初学者,但如果有幸迈过去这一关,可以说是潜力无限。


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


image.png


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



04)C语言核心知识点汇总


为了方便大家的学习,我这里汇总一下 C语言的核心知识点。


先来看文字版的:


数据类型

运算符和表达式

输入和输出

流程控制

函数

数组

指针

结构体

文件操作

内存管理

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


image.png



相关文章
|
2月前
|
存储 编译器 C语言
【数据结构】C语言实现链队列(附完整运行代码)
【数据结构】C语言实现链队列(附完整运行代码)
43 0
|
2月前
|
存储 编译器 C语言
【数据结构】C语言实现带头双向循环链表万字详解(附完整运行代码)
【数据结构】C语言实现带头双向循环链表万字详解(附完整运行代码)
11 0
|
2月前
|
存储 编译器 C语言
【数据结构】C语言实现单链表万字详解(附完整运行代码)
【数据结构】C语言实现单链表万字详解(附完整运行代码)
46 0
|
2月前
|
存储 算法 程序员
【数据结构】C语言实现顺序表万字详解(附完整运行代码)
【数据结构】C语言实现顺序表万字详解(附完整运行代码)
44 0
|
2月前
|
人工智能 BI C语言
【C语言】求两个数的最大公约数和最小公倍数(极简代码版)
【C语言】求两个数的最大公约数和最小公倍数(极简代码版)
18 1
|
2月前
|
存储 编译器 C语言
C语言难?深度剖析第一段C语言代码—带你快速入门C语言
C语言难?深度剖析第一段C语言代码—带你快速入门C语言
42 0
|
2天前
|
人工智能 测试技术 C语言
C语言学习
C语言学习
11 1
|
12天前
|
传感器 算法 C语言
C语言在嵌入式系统开发中的优化策略与代码实现
C语言在嵌入式系统开发中的优化策略与代码实现
26 1
|
16天前
|
存储 算法 C语言
C语言进阶:顺序表(数据结构基础) (以通讯录项目为代码练习)
C语言进阶:顺序表(数据结构基础) (以通讯录项目为代码练习)
|
16天前
|
编译器 Linux C语言
C语言:预处理详解(知识点和代码演示)
C语言:预处理详解(知识点和代码演示)

相关实验场景

更多