前言相信各位小伙伴一定看过这样的言论,某某B乎大佬xxx,发了一堆文字,一定要学好底层,一定要学好 B乎大佬: 杠精张三:学 杠精李四: ...各路杠精大V正在赶来... 杠精王五:PHP万岁,PHP NB,PHP天下第一。 嗯...,可能各位小伙伴或多或少,都看到过这些言论,作为吃瓜群众,我们乐呵乐呵就好了,咱们回归正题叭!! 是否需要学习C语言,我的回答是,不是必要的,但是需要懂为什么要学习C语言。 为什么要学习C语言嗯,,,今年是2020年,要是从目前的各种开发项目中开说,C语言的确是用的很少,除了嵌入式等一些一定领域,基本很少能见到C的踪影了,但是为什么还是一直能听到xx说要学好C语言呢? 按照我的理解,其实学习C语言,学的并不是这个语言,而是这个语言背后所代表的一些东西,代表的一些设计,代表的一些本质。 C语言学的好,究竟会带来什么优势相信不少萌新在群里可能听到某个大佬说,我一星期学完了xx语言,然后直接上手干活,然后你默默的说了一句,装13,也可能,你们就在群里直接杠起来了。 那么,真的可以说,一周,或者两周时间,学会一门语言吗?。 我可以负责任的,告诉你,绝对没问题,但是需要建立在强大的基础上。 而指针,是一个特别重要的基础,现在不管哪个语言,其实本质都是指针的应用,只不过是封装的简单了而已。 但是这造成的就是根基如果不稳,就会造成一些莫名奇妙并且不懂的问题,尤其是对萌新来说。 所以,不管现在不管在任何阶段,没有学习C语言的一定要学学C,捡起曾经丢下的重要的基础。 那么,就先听我简单的入门一下吧。 所需要的技术栈本次使用的技术栈是Go语言,理论来说是用C语言的,但是因为在指针这一块入门时,Go和C的本质基本一样,所以就采用更加人性化的Go语言。 后期会在加上Python,和Go对比一下,区别在哪,看看烧了一把火的Python是如何分配内存的。 当前,在看此文章时,我还是建议小伙伴有一定基础的,至少能看懂怎么定义变量啥的都行。 操作系统各硬件的关系首先,我们需要了解一下计算机主要组成部分。 首先,简单的说,至少由 那么这些硬件是如何互相配合的呢。 嗯...大概是这样子的,有点丑。 简而言之就是:
好嘞,通过上述,我们基本可以了解到操作系统和各硬件的协调关系。 悄悄的说个秘密咯,我们写的代码,基本都是运行在内存条中的呢,同理,上述所说的应用,基本也是将应用的代码跑在内存条中的。 内存条没错,就是这玩意,内存条。 同理,我还还可以这样理解内存条内部的结构。 我们可以将内存条理解成一个个房子,就像这样。 依然还是很丑... 但是我们的内存条是有的坐标的,也叫地址,每个小格子里放着一个个的值。 但是通常情况下,我们都是平面图理解的,就像这样。 地址(坐标)一般以十六进制表示,值该是啥就是傻。 代码简述我们来看一段非常短Go的代码。 声明一个age变量并且赋值为18,并且输出。
在内存中如何表示。 我们的变量名age指向了 就像这样。 注:一定要理解这句话,变量名指向的就是内存条上的地址。 上述age指向就是地址 但是我们在 同理,我们在赋值,交换变量时,还是是地址里面的值。 例如: 上述代码内存分配图。 age2会重新申请一个地址存储age的值18。 可能有时候可能会有人问,星期八,有没有这种情况,他俩同时指向一个内存,这种不是更省内存嘛。 结果:当然会,这种情况,我们后面会讲到的,现在能看懂就行,一步一步来。 结论 变量名指向的是内存地址。 我们在赋值时,或者打印等操作变量时,操作的是地址上面的值。 结尾上述已经很长了可能你们有点晕了,这篇就到此为止了。 如果在操作过程中有任务问题,记得下面留言,我们看到会第一时间解决问题。 我是码农星期八,如果觉得还不错,记得动手点赞以下哈。 感谢你的观看。 如果在操作过程中有任何问题,记得下面留言,我们看到会第一时间解决问题。 用微笑告诉别人,今天的我比昨天强,今后也一样。 如果你觉得文章还可以,记得点赞留言支持我们哈。感谢你的阅读,有问题请记得在下方留言噢~ |