C语言和C++的区别

Python011

C语言和C++的区别,第1张

C语言与C++的区别有很多,下面是简要概述:

1、面向不同

C语言是面向过程的,

C++是面向对象的。

函数

C语言有标准的函数库,它们松散的,只是把功能相同的函数放在一个头文件中;

C++对于大多数的函数都是有集成的很紧密,特别是C语言中没有的C++中的API是对Window系统的大多数API有机的组合,是一个集体。但你也可能单独调用API。

3、结构概念不同

C言中结构只有成员变量,而没成员方法,C语而在但是在C语言中结构的成员是公共的,什么想访问它的都可以访问;

C++中结构中,它可以有自己的成员变量和成员函数。

4、写作数量不同

C语言可以写很多方面的程序,

C++可以写得更多更好,C++可以写基于DOS的程序,写DLL,写控件,写系统。

5、组织不同

C语言对程序的文件的组织是松散的,几乎是全要程序处理;

C++对文件的组织是以工程,各文件分类明确。

C语言和C++的区别和联系如下:

C++和C语言本来就是两种不同的编程语言,但C++确实是对C语言的扩充和延伸,并且对C语言提供后向兼容的能力;但二者在具体语言上存在许多区别。

关键字的不同:C语言有32个关键字;C++有63个关键字。

后缀名不同:C源文件后缀.c,C++源文件后缀.cpp,在VS中,如果在创建源文件时什么都不给,默认是.cpp。

返回值不同:C语言中,如果一个函数没有指定返回值类型,默认返回int类型;C++中,如果一个函数没有返回值则必须指定为void。

参数列表不同:在C语言中,函数没有指定参数列表时,默认可以接收任意多个参数;但在C++中,因为严格的参数类型检测,没有参数列表的函数,默认为void,不接收任何参数。

C语言和C++的学习顺序

C++编程语言的第一大重要组成部分就是“面向过程编程”,而这正是C语言老大哥的领域。即使没有学过C语言,一上来就直接学习C++的小伙伴,应该也难逃“面向过程”这一部分的内容。

从理论上来说,学C++前并不一定非得学C语言,但是有C语言底子再去学C++往往更具优势,最起码“面向过程编程”这一部分内容能够轻车熟路。

C与C++的区别:\x0d\x0a 1. C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是 如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程 (事务)控制)。\x0d\x0a 2. 对于C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应 的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控 制。 \x0d\x0a所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。\x0d\x0a对语言本身而言,C是C++的子集,那么是什么样的一个子集?从上文可以看出, C实现了C++中过程化控制及其它相关功能,而在C++中的C(我称它为“C+”),相对于原来的C还有所加强,引入了重载、内联函数、异常处理等等玩艺儿,C++更是拓展了面向对象设计的内容,如类、继承、虚函数、模板和包容器类等等。\x0d\x0a\x0d\x0aC++在历史上曾经是C的扩展,不过现在两个都各自有发展,所以现在的C++与现在的C没有谁是谁的扩展的关系。\x0d\x0a 现在有人说C和C++是大熊猫和小熊猫的关系,也就是说只是名字相近——这多少有欠公允。不过C和C++的确是有巨大区别的,C语言简单有效,但处理大问题就很麻烦像把左轮手枪;而C++则简直是一辆坦克,功能齐备,但更肥大——无非都是兵器而已。至于说学习上C是C++的基础,倒是一大误区,枪械和火炮长得可能有点像,甚至也有点渊源,但终究全不是一回事。 \x0d\x0a\x0d\x0a 先学C,后学C++有好处也有坏处,应该说至今仍有争论。 \x0d\x0a我的看法是,如果是做应用软件一类的编程,就不应该先学C,而且应该在初学时少接触C的旧式编程风格,而是把大部分精力放在C++的标准库(包括基于STL的编程,这方面国内一般的教材最欠缺),以及基于对象和面向对象的编程上。这是因为C++的这些应用从编程方式到代码风格都与C语言大相径庭,初学养成C式的编程习惯就很改掉,反而限制对类和泛型编程的理解。 \x0d\x0a 如果是想接触比较底层的东西,以后做软件库开发、系统编程之类,那么学C语言,尤其是一些像宏、指针、内存管理等知识就很有好处(这些东西在前一种应用中却都要尽量避免)。但先学C的好处并不明显,因为直接学C++同样可以学到这些东西,只要改变一点学习侧重就可以了。 \x0d\x0a 上面是从应用方向角度说的。至于学习的困难程度,直接学C++并不难,而且在一些方面更简单一些;只不过C++的内容比C多罢了。C++的创始人Stroustrup就大力提倡不要学C,并列举了先学C的种种坏处。因此我的意见也是不学C,直接学C++。 \x0d\x0a\x0d\x0a 现在国内讲C++的书一般是先讲与C相似的一块,后讲C++独有的内容,没有融合在一起,看似C成了“基础”。其实这种讲法主要是由于国内编教材的教师多是学C语言(甚至机器码、汇编)出身的,可能到很晚才接触C++,因而有思维定势。其实看国外许多教材,一入门就强调类的概念,入门不多久就大量用到STL,过程式的语法与这些一块讲,同样也很直观(对象的概念实际上比函数的概念直观得多),可以学得通。