C语言的特点与缺点



C语言的特点可以概括如下:

1. C语言简洁、紧凑、灵活。C语言的核心内容很少,只有32个关键字,9种控制语句;程序书写格式自由,压缩了一切不必要的成分。

2. 表达方式简练、实用。C语言有一套强有力的运算符,达44种,可以构造出多种形式的表达式,用一个表达式就可以实现其它语言可能要用多条语句才能实现的功能。

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

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

5. 是一种结构化语言,适合于大型程序的模块化设计。C语言提供了编写结构化程序的基本控制语句,如if~else语句、switch语句、while语句、do~while语句等。C程序是函数的集合,函数是构成C程序的基本单位,每个函数具有独立的功能,函数之间通过参数传递数据。除了用户编写的函数外,不同的编译系统、操作系统都相伴还提供了大量的库函数供用户使用,如输入输出函数、数学函数、字符串处理函数等,灵活使用库函数可以简化程序的设计。

6. 各种版本的编译系统都提供了预处理命令和预处理程序。预处理扩展了C语言的功能,提高了程序的可移植性,为大型程序的调试提供了方便。

7. 可移植性好。程序可以从一个环境不经改动或稍加改动就可移植到另一个完全不同的环境中运行。这是因为系统库函数和预处理程序将可能出现的与机器有关的因素与源程序隔开,这就容易在不同的C编译系统之间重新定义有关内容。

8. 生成的目标代码质量高。由C源程序得到的目标代码的运行效率比用汇编语言写的也不过只低10%到20%,可充分发挥机器的效率。

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

通过上述的介绍,已经了解了C语言的若干特点。C语言虽然是一种优秀的计算机程序设计语言,但也存在以下的一些缺点,了解这些缺点,才能够在实际使用中扬长避短。

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

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

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

早期的计算机语言有BASIC语言、Fortran语言、ALGOL语言、COBOL语言和Pascal语言等,近来使用的人相对要少得多,除非是既有的软件系统使用这些语言,或者一些人想使用现成的程序或软件,才会使用这些语言。

现在的软件开发中更多地使用C++语言和Java语言,在开发Web应用软件时则会使用JSP语言和PHP语言等。随着面向对象技术的广泛普及,Java语言受到很多人的青睐,这是由于Java语言具有编程效率高,降低软件开发成本,不需要考虑存储的分配与回收等程序细节,编写出来的程序更具有健壮性,但是也一定程度上付出了运行效率的代价。C++语言则介于C语言和Java语言之间,也是面向对象的计算机语言,同时具有编程效率高和运行速度快的特点。

C语言是一种过程性的语言,职业的程序员或软件开发人员应该学习一下该计算机语言。这是因为,C语言可以代替机器语言或汇编语言编写运行速度快的程序;对于单片机应用、嵌入式系统和通信软件等是不可替代的;C语言的指针与计算机硬件的地址具有异曲同工之处,是了解计算本质的钥匙;通过C语言相关的存储分配函数,可以深入了解计算机存储分配的原理。

时间: 2024-10-11 14:04:22

C语言的特点与缺点的相关文章

平台化项目多语言架构实现

项目为什么要平台化 一.易维护 封装可以大大的减少耦合,当发生变更的时候只需要修改一处地方.平台化项目和封装是有区别的,平台化项目是将项目所有组件.事件等制定一个标准,将这些组件基于标准进行高度封装,实现配置界面,通过配置大大的减少编码量. 当需要整体变更的时候只需要更改这个标准便可,维护点更加的明确. 二.可扩展 1.首先有一点我要纠正,好多人都说封装性太强的东西只能做一些定性的项目,不能满足复杂的需求.这个观点是错误的,只能说你在使用别人高度封装的框架,而没有自已的框架 或者 没有掌握别人的

windows官方多语言方案

编写 Win32 多语言用户界面应用程序 Windows 2000 针对全球市场制定了新的增强支持标准,提供了许多国际化功能,例如完全支持 Unicode.预设支持数百种语言以及用于从右向左语言的镜像技术.在 Microsoft Systems Journal (MSJ) 中已经发表了多篇文章来说明如何针对 Windows 2000 来编写 Unicode.复杂脚本以及镜像的应用程序. Windows 2000 多语言用户界面(也称为 MUI)是 Windows 2000 中一个最有用的国际化功

Foundation框架—集合

一.NSArray和NSMutableArray (一)NSArray不可变数组 (1)NSArray的基本介绍 NSArray是OC中使用的数组,是面向对象的,以面向对象的形式操纵对象,是不可变数组. C语言数组有一个缺点即数组中只能存放同种数据类型的元素. OC数组只能存放OC对象,不能存放非OC对象,如int,结构体和枚举等. (2)NSArray的创建 (3)NSArray的访问 (4)NSArray的遍历 数组的遍历有以下几种方式: 首先创建一个数组 第一种方法:使用for循环遍历 B

初学Python

初学Python 1.Python初识 life is short you need python--龟叔名言 Python是一种简洁优美语法接近自然语言的一种全栈开发语言,由"龟叔"编写开发一种易学易懂高效的语言. Python提供丰富的接口和模块,便于使用其他语言细化,性能提升对要求较高的软件. 以上简单描述了一下Python语言的优点,缺点我就不写了,因为不需要对比,强大的语言自会解决现在几个劣势. 针对于初学者版本选择的问题,因为现在国内大多数在使用2.X版本,个人建议使用3.

.NET面试题集锦(Part 二)

一.前言部分 文中的问题及答案多收集整理自网络,不保证100%准确,还望斟酌采纳. 1.实现产生一个int数组,长度为100,并向其中随机插入1-100,并且不能重复. 1 int[] intArr=new int[100]; 2 ArrayList myList=new ArrayList(); 3 Random rnd=new Random(); 4 while(myList.Count<100) 5 { 6 int num=rnd.Next(1,101); 7 if(!myList.Con

【转载】COM小结

原文:http://blog.csdn.net/byxdaz/article/details/6595210 一.Com概念 所谓COM(Componet Object Model,组件对象模型),是一种说明如何建立可动态互变组件的规范,此规范提供了为保证能够互操作,客户和组件应遵循的一些二进制和网络标准.通过这种标准将可以在任意两个组件之间进行通信而不用考虑其所处的操作环境是否相同.使用的开发语言是否一致以及是否运行于同一台计算机. 在COM规范下将能够以高度灵活的编程手段来开发.维护应用程序

Python-正确使用Unicode

正确处理文本,特别是正确处理Unicode.是个老生常谈的问题,有时甚至会难倒经验丰富的开发者.并不是因为这个问题很难,而是因为对软件中的文本,开发者没有正确理解一些关键概念及其表示方法.在StackOverflow上搜索关于UnicodeDecodeError相 关的问题,可以看到很多人都有这样的误解.这些错误的概念可以追溯到Unicode出现之前.那时许多现今的开发者还没入职,也包括我自己.如果这些错误 的概念没有散布开来,其实不是个问题.现在很多人都有这些错误概念,部分原因是因为有些非常流

Python简史

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Python是我喜欢的语言,简洁,优美,容易使用.前两天,我很激昂的向朋友宣传Python的好处. 听过之后,朋友问我:好吧,我承认Python不错,但它为什么叫Python呢? 我不是很确定:呃,似乎是一个电视剧的名字. 朋友又问:那你说的Guido是美国人么? (Guido von Rossum,Python的作者) 我再次不是很确定:他从google换到Dropbox工作,

「Foundation」集合

一.NSArray和NSMutableArray (一)NSArray不可变数组 (1)NSArray的基本介绍 NSArray是OC中使用的数组,是面向对象的,以面向对象的形式操纵对象,是不可变数组. C语言数组有一个缺点即数组中只能存放同种数据类型的元素. OC数组只能存放OC对象,不能存放非OC对象,如int,结构体和枚举等. (2)NSArray的创建 (3)NSArray的访问 (4)NSArray的遍历 数组的遍历有以下几种方式: 首先创建一个数组   方法一:使用for循环遍历 方