请问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\x0a C++在历史上曾经是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,过程式的语法与这些一块讲,同样也很直观(对象的概念实际上比函数的概念直观得多),可以学得通。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询