C语言和C++有什么区别? c语言和c++的区别和联系是什么?

C\u8bed\u8a00\u548cc++\u6709\u4ec0\u4e48\u533a\u522b?

c++\u8bed\u8a00\u662fc\u8bed\u8a00\u53d1\u5c55\u8d77\u6765\u7684\uff0c\u6240\u4ee5\u7ee7\u627f\u4e86c\u8bed\u8a00\u51e0\u4e4e\u6240\u6709\u7684\u7279\u70b9\uff0c\u4f46c++\u8bed\u8a00\u53c8\u6709\u81ea\u5df1\u7684\u4e2a\u6027\u3002c\u8bed\u8a00\u662f\u4e00\u79cd\u9762\u5411\u8fc7\u7a0b\u7684\u7f16\u7a0b\u8bed\u8a00\uff0c\u800cc++\u4e3b\u8981\u662f\u9762\u5411\u8fc7\u7a0b\u7684\uff0c\u56e0\u6b64c++\u6709\u7c7b\u7684\u6982\u5ff5\uff0c\u800cc\u8bed\u8a00\u5c31\u6ca1\u6709\u3002c++\u7684\u529f\u80fd\u5f3a\u5927\uff0c\u7f16\u8bd1\u5668\u590d\u6742\uff0c\u9002\u5408\u9ad8\u7aef\u7a0b\u5e8f\u7684\u8bbe\u8ba1\u548c\u7f16\u8f91\uff0cc\u8bed\u8a00\u7684\u7f16\u8bd1\u5668\u7b80\u6613\uff0c\u9002\u5408\u4f4e\u7aef\u7a0b\u5e8f\u3002

c++\u8bed\u8a00\u662fc\u8bed\u8a00\u53d1\u5c55\u8d77\u6765\u7684\uff0c\u6240\u4ee5\u7ee7\u627f\u4e86c\u8bed\u8a00\u51e0\u4e4e\u6240\u6709\u7684\u7279\u70b9\uff0c\u4f46c++\u8bed\u8a00\u53c8\u6709\u81ea\u5df1\u7684\u4e2a\u6027\u3002c\u8bed\u8a00\u662f\u4e00\u79cd\u9762\u5411\u8fc7\u7a0b\u7684\u7f16\u7a0b\u8bed\u8a00\uff0c\u800cc++\u4e3b\u8981\u662f\u9762\u5411\u8fc7\u7a0b\u7684\uff0c\u56e0\u6b64c++\u6709\u7c7b\u7684\u6982\u5ff5\uff0c\u800cc\u8bed\u8a00\u5c31\u6ca1\u6709\u3002c++\u7684\u529f\u80fd\u5f3a\u5927\uff0c\u7f16\u8bd1\u5668\u590d\u6742\uff0c\u9002\u5408\u9ad8\u7aef\u7a0b\u5e8f\u7684\u8bbe\u8ba1\u548c\u7f16\u8f91\uff0cc\u8bed\u8a00\u7684\u7f16\u8bd1\u5668\u7b80\u6613\uff0c\u9002\u5408\u4f4e\u7aef\u7a0b\u5e8f\u3002

一、主体不同

1、C语言:是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。

2、C++:是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计。

二、优势不同

1、C语言:能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。

2、C++:不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。


三、特点不同

1、C语言:提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

2、C++:在C++中,类是支持数据封装的工具,对象则是数据封装的实现。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++的一个自洽子集,也具有强大的功能,同样值得学习

一、最简单地可以这样理解:
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网站。

相同的地方: 1、语法类似: 由于Java可以算是从C++发展而来的,因此Java与C语言的语法比较类似 2、编程的熟练程度就是对语言程序库的掌握程度: 从某种程度上来说,编程语言都是由语法和相应的程序库所构成,Java有自身的类库,C语言则有标准库。所谓的编程,就是使用与语法来调用和组合程序库中的函数。 不同的地方: 1、内存管理 在Java中,基本不用考虑内存的问题,如果想用一个对象,new一个就可以,这个过程的背后则是JRE为对象分类的一定内存,当JRE发现你不再使用这个对象的时候,他就会自动回收内存,也就是说你只管借东西,不用管归还,因为与有人当你的跟班,在你不使用的时候就把东西归还了,不过这个过程还是有的,只不过是JRE作的而已。 但是C则不同,如果你想用,你可以用malloc之类的方法申请内存,当你使用完了,因为没有跟班的,你需要自己把这块内存归还回去,也就是调用free方法来完成这个任务。由于需要显式的归还内存,因此当一个函数需要将一块内存返回给调用者的时候,问题就比较复杂了,不如面向对象和具有内存回收功能的Java那么直观了。对于这个问题,在C语言中,有几种解决方案: (1) 在调用者中先分配好内存,作为参数传入到被调用的函数中 (2) 在被调用的函数中分配,使用完后在调用者中释放 (3) 在被调用函数中使用static变量,可以将该变量返回 2、面向对象 Java的面向对象的特点很明显,而C则是一个地道的结构化语言。 Java中有一个字符串类String, 通过调用 String.length()就可以知道字符串的长度,但是在C语言中,则需要调用函数strlen(str)来得到字符串(字符数组)的长度。由于C不是面向对象的语言,也就没有this的概念,因此当使用一个与某个“东西”相关的函数时,就需要不厌其烦的将代表这个“东西”的变量作为参数传递进去。 3、名称空间 Java通过包(package)来实现名称空间,在C语言中,所有的函数都处于同一名称空间,也就是没有名称空间,因此就会很多程序提供的api接口函数都有一个前缀,例如MYSQL的mysql_init(), mysql_real_connect(), mysql_real_query()等函数名称前面的mysql_。 给你找的资料。 希望对你有所帮助。。

  • C璇█鍜孋绋嬪簭璁捐鏈変粈涔堝尯鍒?
    绛旓細C璇█锛屽寘鎷叾瀹冪殑璁$畻鏈鸿瑷锛屼粬浠槸涓绉嶈鑼冿紝鍏朵腑鍖呮嫭璇硶銆佽涔夌瓑 C绋嬪簭璁捐鏄埄鐢–璇█鐨勮鑼冿紝鍘诲畬鎴愪竴涓」鐩傞」鐩腑杩愮敤浜嗗悇绉嶉昏緫浠ュ強璁捐鎶宸х瓑
  • C璇█鍜孋璇█绋嬪簭璁捐鏄竴鍥炰簨鍚?涓よ浠涔堝尯鍒?
    绛旓細涓嶅悓锛C璇█鏄竴闂ㄨ瑷锛岃孋璇█绋嬪簭璁捐锛屾槸鐢–璇█鍘诲啓绋嬪簭鎴栬蒋浠讹紝鎱㈡參浣撲細鍚э紒
  • C璇█鍜孋#,C++涓夎鐨勫尯鍒鏄粈涔?
    绛旓細1銆佽瑷浣跨敤闅惧害涓嶅悓 C++闅惧害澶т簬C#澶т簬C璇█銆2銆闈㈠悜鐨勫璞′笉鍚 C 璇█鏄潰鍚戣繃绋嬬殑锛岃 C++ 鏄潰鍚戝璞$殑锛孋# 鏄竴绉嶅畬鍏ㄩ潰鍚戝璞$殑璇█銆3銆鍑芥暟褰㈠紡涓嶅悓 C 璇█鏈夋爣鍑嗙殑鍑芥暟搴擄紝瀹冧滑鏉炬暎鐨勶紝鍙槸鎶婂姛鑳界浉鍚岀殑鍑芥暟鏀惧湪涓涓ご鏂囦欢涓紱鑰 C++ 瀵逛簬澶у鏁扮殑鍑芥暟閮芥槸鏈夐泦鎴愮殑寰堢揣瀵嗭紝鐗瑰埆鏄 C ...
  • 璇烽棶C璇█涓C#鏈変粈涔堝尯鍒?
    绛旓細涓銆侀毦鏄撶▼搴︾殑鍖哄埆銆俢#灞炰簬.net framework涓殑涓涓骇鍝侊紝绠鍗曟槗鐢紝浣嗗紑鍙戝嚭鏉ョ殑涓滆タ鐩墠杩橀渶瑕佸畨瑁呰繍琛屽簱鎵嶈兘渚涘埆浜轰娇鐢ㄣ俢璇█鏄竴绉嶅彜鑰侀毦鐢ㄧ殑璇█锛岀洰鍓嶅彲鑳藉湪宓屽叆寮忕郴缁熺敤鐨勬瘮杈冨锛屽彟澶栧ぇ瀛︿細鏈夎繖闂ㄨ銆傜浉鍏崇殑杩樻湁c++锛屽彲浠ュ仛绯荤粺鐨勫簳灞傚紑鍙戯紝涔熶笉瀹规槗鎺屾彙銆備簩銆鍐呭涓婄殑鍖哄埆銆侰璇█闈㈠悜杩囩▼,寮...
  • C鍜孋++杩樻湁C#鏈変粈涔堝尯鍒鍚?
    绛旓細C鍜孋++杩樻湁C#鐨勫尯鍒細涓锛欳璇█銆侰璇█璇炵敓寰楅潪甯告棭锛屽綋鏃朵汉浠櫘閬嶈繕涔犳儻鐢ㄦ眹缂栬瑷缂栧啓杞欢锛屽苟涓旀病鏈変粈涔堢粺涓锛岄氱敤鐨勬搷浣滅郴缁燂紝鍩烘湰涓婅蒋浠堕兘鏄粠0寮濮嬪啓鐨勩侰璇█鐨勬柟閽堜究鏄瘮姹囩紪鏂逛究鏄撶敤锛屼竴璧蜂笉瑕佹崯澶辨眹缂栫殑琛ㄨ揪鑳藉姏銆傛墍浠璇█鍙互鐪嬫垚鏄滈珮绾х殑姹囩紪鈥濊瑷銆侰璇█鐨勬簮浠g爜鍩烘湰涓婂彲浠ラ潪甯稿鏄撳湴...
  • 绫C璇█鍜孋璇█鏈夊暐涓嶅悓鍝?鍟ュ尯鍒憿?
    绛旓細C璇█涓嶤锛嬶紜鐨勫尯鍒鏈夊緢澶氾細1锛屽叏鏂扮殑绋嬪簭绋嬪簭鎬濈淮锛孋璇█鏄潰鍚戣繃绋嬬殑锛岃孋锛嬶紜鏄潰鍚戝璞$殑銆2锛孋璇█鏈夋爣鍑嗙殑鍑芥暟搴擄紝瀹冧滑鏉炬暎鐨勶紝鍙槸鎶婂姛鑳界浉鍚岀殑鍑芥暟鏀惧湪涓涓ご鏂囦欢涓紱鑰孋++瀵逛簬澶у鏁扮殑鍑芥暟閮芥槸鏈夐泦鎴愮殑寰堢揣瀵嗭紝鐗瑰埆鏄疌璇█涓病鏈夌殑C++涓殑API鏄Window绯荤粺鐨勫ぇ澶氭暟API鏈夋満鐨勭粍鍚堬紝鏄竴涓...
  • c璇█,c銆乧+銆乧++鐨勫尯鍒?
    绛旓細c璇█鏄繃绋嬪寲鐨勭紪绋嬭瑷锛屽鏄撳叆闂ㄣ俢++鏄潰鍚戝璞$殑缂栫▼璇█锛屽叾涓変釜鐗圭偣鏄細灏佽鎬э紝缁ф壙鍜屽鎬併傝繖鏄痗璇█鎵涓嶅叿澶鐨銆俢+涓嶆槸缂栫▼璇█锛屽彲鑳芥槸鏌愪釜璋愰煶鍚э紝姣斿绉佸渚︽帰涓殑鈥滅瀹垛濄傚懙鍛碉紝濡傛灉浣犻棶鐨勬槸鍦╟璇█涓唬琛ㄧ殑鍚箟锛岄偅涔堬細c琛ㄧず涓涓彉閲忥紝濡俰nt c; float c;c+ 琛ㄧず鑷韩涓庡彸渚ц〃杈惧紡...
  • c++鍜宑璇█鐨涓昏鍖哄埆鏄浠涔?
    绛旓細c璇█鏄潰鍚戣繃绋嬬殑銆傞潰鍚戣繃绋嬫槸鐫閲嶄簬鍏朵腑绋嬪簭璁捐鐨勭畻娉曘佽瑷鐨勮繍鐢紝濡傝璁涓嶅悓鍔熻兘鐨勫嚱鏁般侰++鏄潰鍚戝璞$殑銆C璇█鑳戒互绠鏄撶殑鏂瑰紡缂栬瘧銆佸鐞嗕綆绾у瓨鍌ㄥ櫒銆侰璇█鏄粎浜х敓灏戦噺鐨勬満鍣ㄨ瑷浠ュ強涓嶉渶瑕佷换浣曡繍琛岀幆澧冩敮鎸佷究鑳借繍琛岀殑楂樻晥鐜囩▼搴忚璁¤瑷銆c璇█鐨鐗圭偣锛1銆佷唬鐮佸叿鏈夎緝濂界殑鍙Щ妞嶆 C璇█鏄潰鍚戣繃绋...
  • 浜岀骇c璇█鍜宑璇█鏈変粈涔堝尯鍒?
    绛旓細涓夌骇c涓婃満鍙湁涓閬撶紪绋,鍙槸缂栧啓涓涓嚱鏁,鑰屼簩绾у垯涓嶆槸,鏈夌紪绋嬫湁鏀归敊.涓夌骇鐨勯毦搴﹀ぇ,鍙湁涓閬撶紪绋,瀵瑰氨閫氳繃,閿欏氨涓嶅強鏍,浜岀骇鏈変笁閬撻,涓閬揹os鍩虹,涓閬撶▼搴忔敼閿,涓閬撶▼搴忓~绌,姣忛寰楀垎鍒!
  • linux c涓鏅鐨刢璇█鏈変粈涔涓嶄竴鏍?
    绛旓細娌℃湁鏅氱殑C銆C璇█灏辨槸C璇█锛屼笉鍚岀殑鍦版柟灏辨槸骞冲彴涓嶅悓 闂澶ц嚧鍙互璇存槸杩欐牱鍚э細linux C涓巜indows涓C鏈変粈涔堝尯鍒 鍏跺疄娌′粈涔堝尯鍒氨閮芥槸C璇█銆傞潪瑕佽鍖哄埆閭e氨鏄钩鍙颁笉鍚岋紝璋冪敤鐨凙PI涓嶅悓銆俵inux 鏈夎嚜宸辩殑API銆倃indows涔熸湁鑷繁鐨凙PI 渚嬪锛歭inux涓嬫墦寮鏂囦欢鐨勫嚱鏁版槸open()锛岃寃indows涓嬪嵈鏄痜open(),杩...
  • 扩展阅读:学c++有前景吗 ... python和c++哪个更值得学 ... c++和python先学哪个 ... 一节课教你学会c++视频 ... c++编程适合几岁学 ... 初中生学c++有什么好处 ... c十十编程要学多久 ... c语言和c++差别大吗 ... c#一般用来开发什么 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网