当前位置:首页 > 公众号精选 > 大鱼机器人
[导读]关注、星标公众号,直达精彩内容C语言应该是绝大部分同学的编程第一课。对于非CS专业的同学,学C语言主要是掌握一些基本的编程方法,C语言只是媒介。但是对于CS科班的同学,C语言是后续的计组、体系结构、操作系统、编译原理等课程的基石,对于C语言本身甚至程序设计语言基础原理的深入理解都...

关注、星标公众号直达精彩内容

  • C 语言应该是绝大部分同学的编程第一课。

  • 对于非 CS 专业的同学,学 C 语言主要是掌握一些基本的编程方法,C 语言只是媒介。

  • 但是对于 CS 科班的同学,C 语言是后续的计组、体系结构、操作系统、编译原理等课程的基石,对于 C 语言本身甚至程序设计语言基础原理的深入理解都是应该掌握的。

一、一图胜千言

如果你不想看冗余的文字,直接看我画的这个思维导图即可:

二、C 语言易学难精?

很多同学都反映 C 语言难。

实际上,相比 C 、Java 之类的更加现代的语言, C 语言本身的语法特性非常少,不像 C 成了一锅大杂烩。

C 语言本身只包含了编程语言最基本的语法,比如变量、if、else、for、while、枚举、结构体等,外加一个指针。

但是为什么大家都觉得难呢?

说下我大一时觉得难的原因吧,主要两点:

1. 库太少,太原始

用 C 语言写个稍微复杂点的项目,你需要上来先把数据结构、常见算法先实现一遍,更别说字符串,序列化这些了。

比如 Redis 里 SDS、LIST、ZSET、HASH等。

这其实对新手极其的不友好。

想做点有趣的东西,来,先写个链表?

而在 Java 里直接 New 一个 LinkedLits、HashMap,简直不要太高效。

再到后来,学了 Python,才发现这才是编程的高级形态,写个爬虫直接 import xx,几句话就完事了。

而在 C 语言里,你需要裸写 Socket 发网络包,还要解析 HTTP 协议,还要序列化 JSON,处理 HTTPS 这些(当然,你也可以导入库,但是由于 C/C 弱鸡等同于没有的包管理,也挺麻烦的。

这就是新手学 C 容易被劝退的原因,做不出好玩的东西,全是一堆黑框框。

2. 内存、指针

另外,常另 C 语言初学者感到头疼的就是指针了。

指针其实本身不难,就是变量的地址嘛。

但是问题在于地址是个什么东西?

理解地址,就需要理解内存,但是鉴于大多数同学学习 C 语言,都是在大一,那时候没有计算机基础知识,其实理解起来还是稍微吃力的。

内存,其实也很简单啊,你就把它当做一个黑盒,提供了读和写的能力。

就像快递柜一样,提供了存东西、放东西的能力:

读哪里?写哪里?

当然是需要地址啊,地址就跟快递柜上的编号一样,而快递柜格子里就相对于内存中真正存放的内容。

记住这张快递柜的照片,其实指针你就理解了。

什么是二级指针?

就是快递柜格子里放的是另外一个格子的编号,对应到 C 语言举个例子:

int a = 10;
int *pa = 
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
关闭
关闭