Menu Close

什么是C语言的特点优势,什么是C语言的缺点 ?为什么嵌入式工程师必须学习C语言?

%title插图%num

1. C语言有什么特点?

总体来讲,C语言具有下面的优点: 过程语言,快速高效,模块化,静态类型,通用语言,丰富的内置运算符集,功能丰富的库函数,中级语言,可移植性,易于扩展等优点。

过程语言:过程语言是指定一个方法和程序,然后一步一步完成该程序,在执行过程中可能会通过多个函数来执行特定任务。

快速高效:java、python 等较新的语言提供比 c 语言具有更多的功能,但正是由于这些语言的丰富功能,它们的效率有效降低。 C 语言作为中级语言为程序员提供了对计算机硬件的直接操作的访问权限,C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能。静态类型的编程语言本身要比动态类型的编程语言要快。由C源程序得到的目标代码的运行效率比用汇编语言写的也不过只低10%到20%,可充分发挥机器的效率

结构化程序设计语言,适合于大型程序的模块化设计:C语言是以函数作为程序设计的基本单位的,C语言程序中的函数相当于汇编语言中的子程序。C语言对于输入和输出的处理也是通过函数调用来实现的。各种C语言编译器都会提供一个函数库,其中包含有许多标准函数,如各种数学函数、标准输入输出函数等。此外C语言还具有自定义函数的功能,用户可以根据自己的需要编制满足某种特殊需要的自定义函数。实际上C语言程序就是由许多个函数组成的,一个函数即相当于一个程序模块,因此C语言可以很容易地进行结构化程序设计。C语言提供了编写结构化程序的基本控制语句,如if~else语句、switch语句、while语句、do~while语句等。

静态类型:C 编程语言是一种静态类型语言,编译时检查变量的类型,而不是在运行时检查。使用一个变量前,必须先声明它的数据类型。

通用语言:从系统编程到照片编辑软件,C 编程语言用于各种各样的应用。使用它的一些常见应用程序如下:

操作系统:Windows、Linux、iOS、Android、OXS
数据库:PostgreSQL、Oracle、MySQL、MS SQL Server 等。

丰富的内置运算符集:它是一种多样化的语言,具有丰富的内置运算符集,用于编写各种各样的C 程序。

具有强大的功能丰富的库文件和丰富的数据类型:强大的 C 库和函数可以帮助初学者轻松编码。数据类型越多,数据的表达能力就越强。C语言具有现代语言的各种数据类型,如:字符型、整型、实型、数组、指针、结构体和共用体等。可以实现诸如链表、堆栈、队列、树等各种复杂的数据结构。其中指针使参数的传递简单、迅速,节省内存。

中级语言:由于是中级语言,所以兼有汇编语言的能力和高级语言的特点。具有与汇编语言相近的功能和描述方法,如地址运算、二进制数位运算等,对硬件端口等资源直接操作,可充分使用计算机资源。因此,C语言既具有高级语言便于学习和掌握的特点,又具有机器语言或汇编语言对硬件的操作能力。所以,C语言既可以作为系统描述语言,又可以作为通用的程序设计语言。

可移植性:C 语言具有极大的可移植性,因为用 C 语言编写的程序可以在任何系统上运行和编译,无需改动或稍作改动。C语言是通过编译来得到可执行代码的,统计资料表明,不同机器上的C语言编译程序80%的代码是公共的,C语言的编译程序便于移植,从而使在一种单片机上使用的C语言程序,可以不加修改或稍加修改即可方便地移植到另一种结构类型的单片机上去。这大大增强了我们使用各种单片机进行产品开发的能力。

易于扩展:用C语言编写的程序可以扩展意味着当一个程序已经用C语言编写时,可以添加更多的功能和操作。

C语言语法限制不严,程序设计自由度大: C程序在运行时不做诸如数组下标越界和变量类型兼容性等检查,而是由编程者自己保证程序的正确性。C语言几乎允许所有的数据类型的转换,字符型和整型可以自由混合使用,所有类型均可作逻辑型,可自己定义新的类型,还可以把某类型强制转换为指定的类型。实际上,这使编程者有了更大的自主性,能编写出灵活、优质的程序,同时也给初学者增加了一定的难度。所以,只有在熟练掌握C语言程序设计后,才能体会出其灵活的特性。

2.C语言有什么缺点?

一些C语言的优势特点也是它的缺点。例如,C语言语法限制不严,程序设计自由度大是C语言的优点,可有时也是缺点:

1. C程序的错误更隐蔽。C语言的灵活性使得用它编写程序时更容易出错,而且C语言的编译器不检查这样的错误。与汇编语言类似,需要程序运行是才能发现这些逻辑错误。C语言还会有一些隐患,需要程序员重视,比如将比较的”==”写成赋值”=”,语法上没有错误,这样的逻辑错误不易发现,要找出来往往十分费时。

2. C程序有时会难以理解。C语言语法成分相对简单,是一种小型语言。但是,其数据类型多,运算符丰富且结合性多样,使得对其理解有一定的难度。有关运算符和结合性,人们最常说的一句话是“先乘除,后加减,同级运算从左到右”,但是C语言远比这要复杂。发明C语言时,为了减少字符输入,C语言比较简明,同时也使得C语言可以写出常人几乎无法理解的程序。

3. C程序有时会难以修改。考虑到程序规模的大型化或者说巨型化,现代编程语言通常会提供“类”和“包”之类的语言特性,这样的特性可以将程序分解成更加易于管理的模块。然而C语言缺少这样的特性,维护大型程序显得比较困难。

4. 指针是C语言的一大特色,可以说是C语言优于其它高级语言的一个重要原因。就是因为它有指针,可以直接进行靠近硬件的操作,但是C的指针操作也给它带来了很多不安全的因素。C++在这方面做了很好的改进,在保留了指针操作的同时又增强了安全性。Java取消了指针操作,提高了安全性;

为什么嵌入式系统工程师必须学习C语言 ?

%title插图%num

嵌入式开发是一项系统工程,因此要求嵌入式系统厂商不仅要提供嵌入式软硬件系统本身,同时还需要提供强大的硬件开发工具和软件包支持,以方便用户以最低的成本、最短的时间推出自己的产品。终端用户为了编程效率高、代码优化效果好以及运行速度快等优势,C语言往往是嵌入式系统工程师优选的编程语言。

  1. 嵌入式系统工程师可能编写没有操作系统支持的裸机应用程序,相对于汇编语言编程,C语言的结构化、可移植性、丰富的库函数、便于理解及维护等众多汇编语言不具备的高级语言特性,同时又具有编程效率高、代码优化效果好、运行速度快等其它高级语言不具备的优点,使C语言面向底层面向硬件的最佳语言。
  2. 嵌入式开发是在操作系统内部做开发的,而操作系统所有的内核都是C语言所编写的,所以说在嵌入式开发的过程中也选择C语言,肯定是具有很大的优势的。比如在嵌入linux的内核与驱动开发,开发后的源程序与原本的内核程序可以完美的集成在一起,形成更新版的linux系统。
  3. C语言相比较其它的高级语言编程,其语言特点对于嵌入式开发也是最为适合的一个。对于其它高级语言来说运行效率一般比较低,C语言程序运行效率可达汇编的80%,而其它开发程序可能只要C语言的80%(甚至更低),源代码和目标代码也可能会比较长,这样来说就会使内存占用的比较大。嵌入式开发的编程是需要在开发板上跑的,如果内存占用的过多那么就会影响相应的性能,所以对比来说C语言的优势就会突出起来。
  4. 汇编语言的移植性和修改性以及可读性太差,在驱动移植、维护和大型嵌入式开发中,无论裸机还是操作系统下的编程都不适用。
  5. C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码,并且不需要任何运行环境支持,便能运行的编程语言,其移植性好,能够在多种不同体系结构的软件或硬件平台上运行;
  6. C语言在高级语言当中是最贴近物理层面的语言,经过一系列的编译转换,最终它会成为和汇编语言程序非常相近的0101的机械码,可以直接操作硬件,并且具有简洁紧凑、使用灵活的语法机制。
Posted in C语言

发表评论

相关链接