C语言核心技术(第二版) 个人学习记录

前序

  一些个人的瞎叨叨,其实我本身已经从事嵌入式软件行业两年了,大大小小的需求也都接触过不少,最近就是一直感觉技术卡在了某个瓶颈,主要问题编者自己觉得还是基础不牢呀,看很多所谓前沿技术文章,下意识会去纠结于具体的实现,说到底其实是害怕自己不知道具体怎么实现,编者大学学习的自动化专业,听起来和嵌入式专业对口,科班出身,实则大部分课程在学电以及控制相关,对纯软件的掌握其实基础很差,在上班这两年也忙于所谓的实际业务,很少有时间静下来慢慢学习这已经被我所忽略的基本功了,接下来一个月吧,我会慢慢更新我关于c语言核心技术这本书的学习以及理解,有不对的地方也欢迎大佬指正,在下就暂且班门弄斧了,C语言,很高兴重新认识你!

C语言概述(C语言究竟是什么,特点及应用)

  C语言两个最基本的特点也是优点,可移植和高效

可移植性

  在当今各种高级语言层出不穷的年代,可移植性应该是目前很多程序员会去忽略的一个性质,可能很多做纯软件的小伙伴看到这个性质的第一反应是:“还有不可移植的语言么?”,没有接触过硬件的小伙伴其实会对此不太熟悉,不过无论什么语言,什么程序,最后到实际运行时终归要变成机器所能理解的机器码,也就是我们所熟知的object目标文件,那么不同的硬件它的引脚、端口、协议都不相同,所以哪怕需要实现的是同一个效果,同一个功能,不同的硬件平台其所需要的机器码也是截然不同的,这在一开始也困扰了很多早期的程序员,同一个功能,换了个硬件,就得重新编写其汇编代码,搞得疲惫不堪,C语言出现后,就解决了这个问题。
  那么C语言是如何去实现可移植性的呢,说起来也很简单,影响可移植性的无非就是对文件的操作(对硬件的操作本质上也是对文件的操作,在linux有一句名言:“一切皆文件”,谁说的我忘了哈哈哈),以及对内存的管理,那么要想可移植,我不去做这些操作不就可以了,所以C语言本身,不提供任何有关文件以及内存操作的语句,甚至包括最基本的输入输出语句,看到这里,有人可能会有疑问,诶不对啊,我学C语言的第一天,打的第一行代码就是printf("hello world!\n");你怎么说C语言没有输入输出语句呢?其实C语言本身还真没有输入输出功能,它的很多功能,都是通过拓展的库去实现的,就比如我们最熟悉的printf函数,就是在拓展的c标准输入输出库实现的,也就是我们很熟悉的stdio,通过拓展的C标准库,以及其他的第三方库,可以使得C支持几乎目前所有的编程需求。

高效性

  C语言被普遍认为是效率最高的高级语言,在可读性和可移植性远远高于汇编语言的情况下,性能损失只有大概不到20%,其是如何实现的呢,那就是C语言相对于其他语言来说,更加的信任程序员,它并不像其他高级语言一样会去做很多的安全检查,增加很多的限制,这是一把双刃剑,也是很多人觉得C语言简陋的一个主要原因,但是带来的好处也是显而易见的,因为信任,所以它不需要做很多的检查,避免了很多无谓的性能消耗,所以当C语言遇到一个水平优秀的程序员时,其所能发挥的上限要远高于其他语言,哈哈这么看来,C语言似乎更受高手青睐?这个见仁见智吧。

  也正是由于C的可移植以及高效,C被普遍用于嵌入式领域,也是作者本人所耕耘的领域,其实在CPU性能更高的平台上,也会有很多公司选择C++等更加方便的语言,不过C终归在作者本人看来,属于是更有“追求”的选择,这也是为什么,我决定从C开始,重头审视自己的不足。

C语言的结构

  很多学习C语言或多或少都会听到一句对C语言的定义:“C是一门面向过程的语言”,很多人刚接触时可能只是单纯记住了这个概念,后面随着慢慢深入才开始理解这句话的含义是C语言更注重于程序运行时那些先后执行的程序语句,那么C语言为什么面向过程呢,是它的什么特点决定了它是一门面向过程的语言?
  答案也很简单,这得从C语言的结构说起,C语言程序是由函数组成的,函数中可以调用其他函数,在一个C语言程序中,必须定义至少一个函数,它也是这个C语言程序运行所调用的第一个函数,也就是我们所熟知的main函数,程序从main函数的第一行代码开始执行,直到程序的停止
  注:这篇文章中不会包含太多的具体性说明,如讲到C语言的结构时,我不会去讲说一个C程序由预处理命令,全局声明、函数定义等等东西组成,又或者函数声明必须在定义前,函数的定义不能在函数中等等凌乱的内容,这些知识点其他地方有更详细的教学,对我本人的学习也用处不大,文章更多的会倾向于自己对C语言的一些思考,为什么有这个东西,这个东西为什么会在C语言中出现等等内容。

源代码文件、注释、字符集部分内容略过

标识符

标识符这个称呼很多人会突然不知道是什么意思,其实就是平时取得各种函数、变量、宏、结构、等等所定义的对象名称,具体命名规则不详细介绍了。

C编译器的运行原理

在写完C语言程序后,要让程序在目标设备运行起来的话就需要C编译器的帮助了,具体的运行过程我明天详细解释。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值