更多课程 选择中心

C/C++培训
达内IT学院

400-111-8989

C语言的优点、缺点是什么?它为什么会流行这么久?

  • 发布:C++培训
  • 来源:达内C语言和嵌入式培训
  • 时间:2019-01-23 18:27

从PHP是最好的语言开始,程序员们对编程语言的竞争就没有停止过,从几十年前的C/C++,到十几年前的JAVA,再到最近正在红火的python,但是不可否认的是,不管什么语言的流行,C语言依旧稳坐老二。C语言究竟有什么魅力几十年都屹立不倒呢?

C语言的优点、缺点是什么?它为什么会流行这么久?

今天想要跟大家分享的是C语言的优点、缺点,大家看完之后也许就知道C语言之所以流行这么久的原因是什么了,学习一门语言,一定要先要了解它的优缺点,这样才能在以后的学习、工作过程中有的放矢。

C语言现在已经很成熟,它的各种语法规则、思想都已经确立起来了,并对现在的很多语言产生很大的影响。但是任何事物都有其优点和缺点,C语言也不例外。下面我们分别来看一下。

C语言的优点

代码量小。

运行速度快。

功能强大。

我们先看第一个优点,C语言的代码量很小,这是什么意思呢?也就是说如果你要完成同样一个功能,用C语言编写出来的程序的容量是很小的,而用其他语言编写容量就会比较大。

比如 Microsoft Word 和 WPS,它们同样都是办公软件,功能也差不多,但 WPS 的安装文件只有 50MB 左右,而 Microsoft Word 的安装文件超过 500MB,有的甚至接近 1GB。原因就是 WPS 的内核是用C语言编写的。

C语言的第二和第三个优点是它的运行速度比较快和功能强大,我们可以通过一个例子来解释。世界上总共有三大操作系统:UNIX操作系统是用纯C语言编写的;Windows 操作系统的内核也是用C语言编写的;Linux 操作系统仍是用纯C语言编写的。

这三大操作系统的内核全部都是用C语言编写的。为什么用C编写,因为C语言的速度最快。计算机中所有的软件都是在操作系统上运行的,如果操作系统的速度很慢,那么在它基础上运行的软件的速度就更慢了。而且计算机中的所有硬件都是由操作系统控制的。

举个简单的例子,你可以新建一个 Word 文档,这就意味着在硬盘上产生了这个文件。但是你并没有直接控制硬盘,我们是通过操作系统提供的“右键单击”等功能来新建文件的。也就是说,操作系统给我们提供了一个界面,或者说是给我们提供了一种可操作的手段,通过这个手段我们可以删除文件、新建文件、打开文件或者修改文件。

所以操作系统很重要,所有的硬件全部都是由操作系统控制的。而这么重要的东西只能用C语言来写,所以C语言很重要。

为什么操作系统的硬件部分只能用C语言写?

1、与其它高级语言比起来,C语言对硬件亲和性很高,对硬件的利用率也很高。C语言可以很方便的任意操作目前计算机内任何可以用地址来表示。

2. 比 C 更能全方位操作硬件的只有汇编,但是汇编对复杂程序设计实在是太不方便了。所以目前操作系统也只有很少的部分用汇编写。

3. C 语言本身对于应用程序的开发在时间上并不会造成太大的障碍。很多其它语言的高级特性其实只是库的支持而已,如果有那些 library,C 语言在开发效率上并不会有太大的问题。并且发展了这么多年,其实常用的 library 基本上也都能找到。

4. 由于计算机性能的增强,越来越多的功能可以仅通过脚本在宿主环境中完成。这是 C 语言做不到的。

5. C 语言也是高级语言中最能体现目前计算机硬件工作方式的语言。

为什么不能用 Java 写?首先,Java 太慢了;其次,Java 语言没有指针。没有指针就不能访问硬件,所以它的功能是不够的。

嵌入式开发中为什么选择C语言?

能直接访问硬件,指在C语言中,我们可以通过指针控制内存以及寄存器。嵌入式系统是软硬结合的东西,所以我们选择学习能直接访问硬件的高级语言——C语言。

我汇编和C语言都可以直接访问硬件。但汇编的语法较为简单,所以对硬件做初始化操作时选择汇编,而对硬件做初始化时选择C语言(C语言是高级语言中最低级的,但是C语言也具有高级语法)。

很高的运行效率C语言是高级语言中最低级的语言,可以直接编译生成硬件识别的机器码文件。而其他的高级语言需要相应的语言解释器做解释后,再编译。接下来通过C语言与java语言的比较,来帮助读者理解为何C语言相比其他高级语言执行效率较高。

C语言的缺点

危险性高。

开发周期长。

可移植性不强。

我们先看第一点。假如你写同样一个程序,在 Java 里面会报错,而在C语言里面是不会报错的。为什么?因为C语言设计的思想是:你想怎么写程序就怎么写,只要你的这种写法错得不是很离谱,就认为你这么写有特殊的含义,可以通过。但 Java 不行:只要你这么写有歧义,或者说这样写不太好,那么它都会报错。

比如C语言中你可以将一个浮点型数据赋给一个整型变量,编译时只会警告,因为会丢失精度,但是在 Java 中这样写就会报错,它在语法上就禁止你这样写。所以不同的语言对同样一个问题有不同的处理方式。

大家想想这样导致的结果是什么?因为有歧义的程序也可以通过,这样就会有很多漏洞,黑客往往会抓住这些漏洞进行攻击。所以说C语言比较危险。这也是为什么C语言比较难学的原因,因为你学完之后编写一个程序很可能就是错的,但又很难发现。所以前面说 C++ 从安全性上对C语言进行了升级。

第二个是它的开发周期比较长。因为C语言是面向过程的语言,面向过程语言的一个特点就是写大项目的时候很容易“崩溃”。当代码上到 10 万行的时候很容易崩溃,会出现各种各样莫名其妙的错误。这时候就需要用另外一种思想将整个程序的框架重新设计一下,即用面向对象的思想设计。这也是C语言现在没有 Java 流行的原因。

C语言的第三个缺点是可移植性不强。这个主要是针对 Java 的。Java 的可移植性太强了,所以就显得C语言的可移植性不强。什么叫可移植性?就是说 Java 程序在哪个机器上都可以运行,而且结果一模一样。而C语言就不行,C程序在其他机器上不一定能运行。而且就算能运行,结果可能也不一样。

感谢您的阅读,以上就是达内C++培训分享给大家的C语言的优点、缺点,以及C语言为什么流行的原因。现在让你选择学习一门编程语言你会选择C语言吗?好了,更多C++相关的内容尽在达内C++培训机构官网,敬请关注!

免责声明:内容和图片源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:三个通俗易懂的小案例让你秒懂C 语言和 C++、C# 的区别
下一篇:有Java、Python,为什么还要学C++?

空指针到底是什么意思?

a[i] = i++ 到底对不对?

C++培训哪家好?全方位对比机构

C/C++中的必须熟记的基础知识

  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

  • 搜索抖音号

    搜索抖音号:1821685962

    免费领取达内课程视频学习资料

Copyright © 2021 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
黑龙江省

吉林省

河北省

湖南省

贵州省

云南省

广西省

海南省