c语言教会了我什么

Python013

c语言教会了我什么,第1张

你好,之前我也很难理解C语言到底教会了什么,有什么用,但我想现在我可以从“嵌入式”领域和你说说C语言的重要作用。

嵌入式的硬件体系比较低级,许多的工作都需要和底层的东西打交道,而如果使用汇编,将会使开发工作非常难进展。而C语言是“中级语言”,一方面具备了低级语言的高效,另一方面开发速度也很快。比如你要控制一个灯让它亮,那么只用往这个灯的寄存器里面写入数据即可。

如今的嵌入式系统都是包含操作系统的( linux为主流吧 ),而linux的内核是原原本本的C语言编写的,你想读懂linux内核(这对嵌入式很重要),就必须要精通C语言。

还有,嵌入式中,系统编程也是很重要的一块,操作系统提供给了程序员许多调用接口函数,一般在这些操作系统上写应用软件都会使用这些接口。如果C语言不精通,又如何写出更优质的程序呢?如何更好的去理解多线程,进程间通讯呢?

这只是嵌入式领域,其他的领域在下就不大清楚了,不过C语言对嵌入式的作用是非常大的,这点毋庸置疑。

C语言能够存在并发展至今,其生命力之强可见一斑。这其中一定是有着某些不可替代的优点,那么C语言编写程序的优点都有哪些呢?为了方便读者理解,下面对C语言的每条特点进行详细的解说。

(1)程序结构简洁、紧凑、规整,表达式简练、使用灵活。

(2)编写的程序可读性强,编译效率高。

(3)具有丰富的运算符,多达34种。丰富的数据类型与丰富的运算符相结合,使C语言具有表达灵活和效率高等特点。

(4)数据类型种类繁多。C语言具有5种基本的数据类型和多种构造数据类型以及复合的导出类型,同时还提供了与地址密切相关的指针机器运算符。指针可以指向各种类型的简单变量、数组、结构和联合,乃至函数等。此外,C语言还允许用户自己定义数据类型。

(5)是一种结构化程序设计语言,特别适合大型程序的模块化设计。C语言具有编写结构化程序所必需的基本流程控制语句,C语言程序是由函数集合构成的,函数各自独立,并且作为模块化设计的基本单位。

说明:

C语言的源文件,可以分割成多个源程序,分别进行编译,然后连接起来构成可知性的目标文件,为开发大型软件提供了极大的方便。C语言还提供了多种存储属性,使数据可以按其需要在相应的作用域起作用,从而提高了程序的.可靠性。

(6)语法限制不太严格,程序设计自由度大。例如,对数组下标越界不作检查,由程序编写者自己保证程序的正确。一般的高级语言语法检查比较严,能检测出几乎所有的语法错误,而C语言允许程序编写者有较大的自由度,因此放宽了语法的检查。程序员应当仔细检查程序,保证其正确,而不要过分依赖C语言编译程序去查错。

(7)允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作。因此,C语言既具有高级语言的功能,又兼容低级语言的许多功能,可用来编写系统软件。

(8)生成的目标代码质量高,程序执行效率高。它一般只比汇编程序生成的目标代码率低10%~20%。

(9)具有较高的可移植性。它的语句基本上无须修改就能用于各种型号的计算机和各种操作系统。

C语言是处于汇编语言和高级语言之间的一种中间型程序设计语言,常被称为中级语言。它既有高级语言的基本特点,又具有汇编语言面向硬件和系统,可以直接访问硬件的功能。

C语言的这些优点,读者仅通过这里的介绍还不能深刻理解和体会,待对C语言有了一定的了解之后再回顾一下,就会体会到这些优点了。但由于C语言的限制少、灵活性大、功能强,所以对程序员有较高的要求。在使用C语言进行编程时,需要有足够的细心和耐心。

首先要明确C语言的用处

C语言现在在大多数IT行业里认为是非主流的,因为大多数IT行业是互联网公司,多数用java等面向对象的语言,他们的重点不在速度不在效率。

但是实际上C语言只是在大家不熟悉的地方使用,比如windows和linux的内核,比如通信行业的流传输。这些基本上都是C语言在搞,因为java之中面向对象的语言无法满足这些地方的效率,而只有C这类高效率的面向过程的语言才能满足这类需求。

什么是面向过程,通俗点讲就是细节,一个人是由胳膊腿躯干头组成的(java),血管和肌肉就是细节(c)。四肢的移动速度可以按秒计算,血液的流动怎么按秒计算呢?

那为什么C语言的效率高呢,最直接的表现就是指针。

你举得例子a=b和*p=b是一样的,这个没问题,java一般都是a=b这么用,换算成指针就是*p=b。但是C语言大部分的赋值都不会考虑*p=b,为什么,因为效率低,C语言一般是p=&b这么来写,我不需要赋值,我只是搬运工,如果b这个结构体有1M这么大,那a=b相当于拷贝了1M的内存而p=&b只不过一个四字节的内存操作而已,前者也许要耗费1ms,后者如果按字节数来算的话 你可以想象效率提高了多少数量级。

更别说什么回调函数啊,结构体里存指针比存整个结构体省内存啊之类的了。