admin管理员组

文章数量:1530516

2024年5月31日发(作者:)

C语言和C++的区别

首先,我们来看看C语言与C++的概念:

1. C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有

汇编语言的特点。它由美国贝尔研究所的

D。M。Ritchie

于1972年推出,1978

年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计

语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件

的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发

上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动

画,具体应用比如单片机以及嵌入式系统开发。

1) C++这个词在中国大陆的程序员圈子中通常被读做“C加加",而西方的程序

员通常读做“C plus plus”,“CPP”。 它是一种使用非常广泛的计算机编程

语言。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计

语言。它支持过程化程序设计、数据抽象、面向对象程序设计、泛型程序设

计等多种程序设计风格。

2) 随着软件规模的增大,用C语言编写程序渐渐显得有些吃力了。

C++是由AT&T Bell(贝尔)实验室的Bjarne Stroustrup博士及其同事于20

世纪80年代初在C语言的基础上开发成功的。 C++保留了C语言原有的所有优

点,增加了面向对象的机制.

C++是由C发展而来的,与C兼容。用C语言写的程序基本上可以不加修改

地用于C++。从C++的名字可以看出它是C的超越和集中。C++既可用于面向过程

的结构化程序设计,又可用于面向对象的程序设计,是一种功能强大的混合型的

程序设计语言。

C++对C的“增强",表现在六个方面:

(1) 类型检查更为严格。

(2) 增加了面向对象的机制。

(3)增加了泛型编程的机制(Template)。

(4)增加了异常处理。

(5)增加了运算符重载。

(6)增加了标准模板库(STL)。

面向对象程序设计,是针对开发较大规模的程序而提出来的,目的是提高软

件开发的效率。不要把面向对象和面向过程对立起来,面向对象和面向过程不是

矛盾的,而是各有用途、互为补充的.

学习C++,既要会利用C++进行面向过程的结构化程序设计,也要会利用C++

进行面向对象的程序设计,更要会利用模板进行泛型编程。

C++的特点

C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。

C++语言的主要特点表现在两个方面:一是尽量兼容C,二是支持面向对象的方法。

它操持了C的简洁、高效的接近汇编语言等特点,对C的类型系统进行了改革的扩充,因此

C++比C更安全,C++的编译系统能检查出更多的类型错误.

另外,由于C语言的广泛使用,因而极大的促进了C++的普及和推广。C++语言最有意义的方

面是支持面向对象的特征。虽然与C的兼容使得C++具有双重特点,但他在概念上完全与C

不同,更具面向对象的特征。

C语言的特点

1.简洁紧凑、灵活方便

C语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示.它把高

级语言的基本结构和语句与低级语言的实用性结合起来。 C 语言可以象汇编语言一样对

位、字节和地址进行操作, 而这三者是计算机最基本的工作单元。

2。 运算符丰富

C的运算符包含的范围很广泛,共有种34个运算符。C语言把括号、赋值、强制类型转换

等都作为运算符处理。从而使C的运算类型极其丰富表达式类型多样化,灵活使用各种运

算符可以实现在其它高级语言中难以实现的运算。

3。 数据结构丰富

C的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。

能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外C语

言具有强大的图形功能, 支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。

4. C是结构式语言

结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼

此独立。这种结构化方式可使程序层次清晰, 便于使用、维护以及调试。C语言是以函数形

式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而

使程序完全结构化。

5. C语法限制不太严格、程序设计自由度大

一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。而C语言允许程序编

写者有较大的自由度。

C和C++的区别:

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要

考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出

(或实现过程(事务)控制)。

C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应

的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)

控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。

之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

分析C++与C的不同:一、类,类对于初学者,它是一个累赘。类的封装使得初

学者对程序产生厌倦,感到不适和麻烦。二、引用,引用是C++中最好尽量不要

用它,除非万不得已。引用对于初学者就更容易产生混淆,不知道哪个是引用,

哪个是变量.三、函数的重载,初学者学函数的重载好像没什么坏处,但是,这会

使初学者潜意识里对C语言的变量类型的重要性产生淡化,要记住C语言是对变

量类型最敏感了的,变量的类型在C语言里的重要性是不言而喻的。四、流操作

符,和上面同样的道理,使得对变量类型的重要性产生淡化,有时会产生使初学者

莫名其妙的结果。五、操作符重载,典型的高级应用,初学者可能根本用不着,这

个东东会让他们觉得C++很难,门槛高,看不懂。

六、继承,以及虚函数,看起来深奥,实用价值很低.

七、误区::问:C++是面向对象化的而C是面向过程化的?答:第二对,第

一问错,C++并非完全面向对象化,真正的面向对象化的语言恐

怕只有Java才算得上。问:C++能实现C所不能的功能吗?答:至少我还没

有发现问:学了C再学C++有障碍吗?比如程序设计思想答:至少我还没有看见

谁有此症状。问:学了C再学C++又要重头开始吗?答:不,C++下可以实现C语

言的一切功能。问:我学完了C一定还要学C++才能编程吗?答:完全没必要。

问:C++比C好在哪里?答:更加符合软件工程学问:学完了C再学C++是不是很

容易?答:那要看你是不是真正的学完了C语言.

C与C++的最大区别:在于它们的用于解决问题的思想方法不一样.之所以

说C++比C更先进,是因为“设计这个概念已经被融入到C++之中”,而就语言本

身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是

程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设

计”也能写出非常好的东西。对语言本身而言,C是C++的子集,那么是什么样

的一个子集?从上文可以看出, C实现了C++中过程化控制及其它相关功能,而

在C++中的C(我称它为“C+”),相对于原来的C还有所加强,引入了重载、内联

函数、异常处理等等玩艺儿,C++更是拓展了面向对象设计的内容,如类、继承、

虚函数、模板和包容器类等等。 再提高一点,在C++中,数据封装、类型这些

东东已不是什么新鲜事了,需要考虑的是诸如:对象粒度的选择、对象接口的设

计和继承、组合与继承的使用等等问题。所以相对于C,C++包含了更丰富的“设

计"的概念,但C是C++的一个自洽子集,也具有强大的功能,同样值得学习几

点学习建议:1.基本概念很重要.无论学C,还是学C++,基本概念都是第一位的,

也是比较困难的,但只有把握了基本概念才能把握整体脉络,才能居高临下。2.C

是C++的子集,它的基本概念和设计方法相对比较容易理解,初学者可从它入手。

3.如果要学好C++,建议初学者最好别在如VC,BCB平台下写程序,那种自动化

的代码生成,花花绿绿的界面,会让你手足无措。最好先找一片空地(unix,dos),

从头做起,写几个大点的程序,数个回合,再到VC,BCB下看看,你会轻松得很.

在我看来,学好C/C++是成为VC,BCB高手的必由之路。4.不要妄想速成,必须

得一个byte,一个bit的去抠,尽量搞清楚每一个问题.

6. C语言允许直接访问物理地址,可以直接对硬件进行操作

因此既具有高级语言的功能,又具有低级语言的许多功能,能够象汇编语言一样对位、字节

和地址进行操作,而这三者是计算机最基本的工作单元,可以用来写系统软件.

7. C语言程序生成代码质量高,程序执行效率高

一般只比汇编程序生成的目标代码效率低10へ20%。

8. C语言适用范围大,可移植性好

C语言有一个突出的优点就是适合于多种操作系统, 如DOS、UNIX,也适用于多种机型。

用法补充:

C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其

它高级语言,许多大型应用软件都是用C语言编写的。

C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,

三维,二维图形和动画它是数值计算的高级语言。

本文标签: C语言语言程序类型面向对象