C语言与C++语言有什么区别

如题所述

C和C++的关系:就像是win98跟winXP的关系。C++是在C的基础上增加了新的理论,玩出了新的花样。所以叫C加加。

C和C++的区别:

C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。
C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。
下面我们一步一步来分析C++与C的不同:

一、类,类对于初学者,它是一个累赘。类的封装使得初学者对程序产生厌倦,感到不适和麻烦。
二、引用,引用是C++中最好尽量不要用它,除非万不得已。引用对于初学者就更容易产生混淆,不知道哪个是引用,哪个是变量。
三、函数的重载,初学者学函数的重载好像没什么坏处,但是,这会使初学者潜意识里对C语言的变量类型的重要性产生淡化,要记住C语言是对变量类型最敏感了的,变量的类型在C语言里的重要性是不言而喻的。
四、流操作符,和上面同样的道理,使得对变量类型的重要性产生淡化,有时会产生使初学者莫名其妙的结果。
五、操作符重载,典型的高级应用,初学者可能根本用不着,这个东东会让他们觉得C++很难,门槛高,看不懂。
六、继承,以及虚函数,看起来深奥,实用价值很低。还有些东东我就不发表评论了,如:new,delete操作符等
七、误区:以问答形式:
问: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的去抠,尽量搞清楚每一个问题。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-04-26
一、最简单地可以这样理解:
C++是C的发展、延续和扩展。除工业特需外,单纯使用C进行实用编程的人已很少。
另外,C#是C++的仿照与扩展(但可能不能算是延继,底层实现完全不同)。

二、最通俗的理解:
1、为了降低编程难度,在C的基础上发展出了C++,C++的大部分语法与C相同,编程环境(编译器)完全不同,低层实现基本相同。
2、为了降低编程难度,在C++的基础上又发展出了C#,C#的大部分语法与C++相同,编程环境完全不同,低层实现的机理也根本不同。
3、在视窗操作系统中,编写实用程序,多数情况下用C++编程比用C编程工作量要减少十倍。
4、在网络应用,特别是三层架构的网站编写方面,多数情况下用C#编程比用C++编程工作量要减少十倍
5、减低了工作量的同时加强了稳定性(编写的代码越少,出错的机率自然越小),不可避免的减低了程序的运行效率(自动生成的代码中,很多是不必要的套路和不必要的调用)。

三、相关知识:
1、1972年美国贝尔实验室的 D.M.Ritchie 在B语言的基础上设计出了计算机C语言,1978年,C语言正式发布并制定语言标准。(够早了吧,比很多玩电脑的人的年龄都大),那时的计算机基本上只有专业的实验室里才能见到,普通人家是不可能有的。
2、1979 年,Bjarne Stroustrup 借鉴 Simula 中 "Class" 的概念,开始研究增强 C 语言,使其支持面向对象的特性,1983 年,这种语言被命名为 C++。此后,C与C++开始相对并行的发展。
3、相对于C语言来说,C++的很多的“高级”的写法和功能,是让编译器的“自动”去替代人工实现,这当然方便了程序编写人员,但是,正如很多自动化的东西一样,它自动生成的代码往往是“通用”的,套路化,在很多情况下,生成的代码的执行效率上会比人工编写的C语言低。这在计算机性能足够的情况下看不出问题,但在一些性能相对较低的运行环境中,就会有非常明显的差别,最典型的就是工业设计中的专用芯片的程序编写中(单片机控制)。
4、从语言的宏观上去看,C语言是面向过程,编程员要思考每一行代码对整个程序运行的影响,它最大的特点就是好的代码前后紧密联系,高速互动,最大的缺点就是出现故障时需要思考分析涉及的范围相对要广。
5、从语言的宏观上去看,C++在C语言的基础上引入了面向对象的概念,也就是说,它在编程思想上引入了一个一个功能模块单元的概念,用它进行程序编写,最重要的一点就是将整个程序的任务先分割成功能单元,单元之间传递必要的数据,每个单元之间相对独立。它最大的特点就是出现故障时,只需要对应功能单元及它的输入输出,这样排除故障就容易和快速得多,程序的运行也会可靠很多。
6、事实上,在当前,对于一般的win下的实用应用的开发,C语言基本上已经无能为力了。因为要在win下实现一个最基本的功能,用C去写,编程者要作的工作相对于用C++所做的工作,可能要多十倍以上。而且也没有足够的资料和可引用的代码(因为这样做的人少,所以,可供借用的也就少)。C++编程在win下已成主流之一。
7、随着计算机性能的发展,及网络技术的发展,C++也有它的后来者,那就是C#,对的,C++后面两个加号,C#的意思就是四个加号。从底层去看,类似于C++对比于C,C#也是方便了编程者但降低了程序的运行效率。
8、C#的运行机理是,基于.net动态库的调用及部分win API的间接调用,C++的运行及win API的调用及部分设备底层的IO调用。C++编译出来的可以是真正的机器二进制代码(也可以是调用C++运行库),而C#编译出来的只是一种中间码在运行中由.net环境进行边解释边运行,所以在计算机性能不足情况下,C#的程序运行速度要明显慢。
9、但也正如C与C++之间一样,C#与C++也在并行发展中,C#能完成的事,理论上C++也能完成,而且可能在效率上会更好。但是,在某些项目上,用C++开发的难度会是用C#开发难度的十倍以上,比如编写一个WEB网站。本回答被网友采纳
第2个回答  2023-04-01
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语言更高一级。本回答被网友采纳