C语言和C++的区别

如题所述

第1个回答  2018-12-14
C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

  1,全新的程序程序思维,C语言是面向过程的,而C++是面向对象的。

  2,C语言有标准的函数库,它们松散的,只是把功能相同的函数放在一个头文件中;而C++对于大多数的函数都是有集成的很紧密,特别是C语言中没有的C++中的API是对Window系统的大多数API有机的组合,是一个集体。但你也可能单独调用API。

  3,特别是C++中的图形处理,它和语言的图形有很大的区别。C语言中的图形处理函数基本上是不能用在中C++中的。C语言标准中不包括图形处理。

  4,C和C++中都有结构的概念,但是在C语言中结构只有成员变量,而没成员方法,而在C++中结构中,它可以有自己的成员变量和成员函数。但是在C语言中结构的成员是公共的,什么想访问它的都可以访问;而在VC++中它没有加限定符的为私有的。

  5,C语言可以写很多方面的程序,但是C++可以写得更多更好,C++可以写基于DOSr程序,写DLL,写控件,写系统。
第2个回答  2012-03-08
如果你是刚开始学习一门语言,相信下面几条对你会有帮助!
1. C++虽然主要是以C的基础发展起来的一门新语言,但她不是C的替代品,不是C的升级,C++和C是兄弟关系。没有谁比谁先进的说法,更重要的一点是C和C++各自的标准委员会是独立的,最新的C++标准是C++98,最新的C标准是C99。因此也没有先学C再说C++的说法,也不再(注意这个 "不再 ")有C++语法是C语法的超集的说法。

2. C++/CLI 和 C# 是微软的,它们与C和C++没有任何关系,虽然部分语法相似。但哪两种语言不相似呢?都是abc这26个字母。

3. 不要使用TC/TC++/BC/CB等古老的编译器来学习C/C++,因为它们太古老了,不支持新的C/C++标准。不要使用CBX/VC++6.0/VC2005等对C/C++标准支持不好的编译器,虽然这些编译器适合工作,但不适合学习,因为它们中的语法陷阱很多。记住唯一适合学习的编译器是gcc/mingw。[antigloss注:Dev-C++ 使用的编译器就是gcc & g++]

4. 不要用 " "代替 <> 来包含系统头文件,虽然有些编译器允许你这样做,但它不符合C/C++标准。
错误的示例:#include "stdio.h ",#include "iostream "。[antigloss注: <> 用于包含标准头文件和系统头文件, " " 用于包含自定义头文件。标准似乎没有明确规定不准用 " " 包含标准头文件和系统头文件。使用 " " 包含标准头文件或者系统头文件只能说是一种不良风格。]

5. 不要将main函数的返回类型定义为void,虽然有些编译器允许你这样做,但它不符合C/C++标准。不要将函数的int返回类型省略不写,在C++中要求编译器至少给一个警告。错误的示例:void main() {},main() {} [antigloss注:C99和C++98都要求编译器对省略int至少发出一个警告]

6. 不要把VC++中的 #include "stdafx.h " 贴出来,它是预编译头文件。如同上菜时不要把厨师也放到托盘中。

7. [C++]不要#include <iostream.h> ,不要#include <string.h> ,因为它们已经被C++标准明确的废弃了,请改为 #include <iostream> 和 #include <cstring> 。规则就是:
a. 如果这个头文件是旧C++特有的,那么去掉.h后缀,并放入std名字空间,
比如 iostream.h 变为 iostream。
b. 如果这个头文件是C也有的,那么去掉.h后缀,增加一个c前缀,比如 string.h
变为 cstring;stdio.h 变为 cstdio, 等等。
BTW:不要把string、cstring、string.h三个头文件搞混淆
BTW:windows.h不是C/C++的标准文件,因此它的命名C/C++不管。

8. 不要再写 char* p = "XXX " 这种语句,要写成 const char* p = "XXX ",编译器之所以让前者通过编译是为了兼容以前的大量的旧代码。
BTW:const TYPE* p 和 TYPE const* p 是一样的,风格不同而已。
BTW:C语言中也有const关键字。

9. 不要在同一条语句中包含一个变量的多个++/--,因为它们的解析在C/C++标准中没有规定,完全取决于编译器的个人行为。

10. C/C++ 是平台无关性语言,因此系统相关的 process/GUI 等不在标准 C/C++ 库中。比如 graphics.h 和 windows.h 等是由某个编译器提供的,而不是由C/C++ 提供的。

11. C/C++只是语言,而且是平台无关性语言。论坛上有部分人甚至认为C就是dos,C++就是windows,那么请问linux是什么?

12.[C++]面向对象曾经是设计C with class(C++的前身)的主要目的,但C++不是,C++是一个多典范语言。主要支持过程调用、基于对象、面向对象、泛式编程这四种编程典范。当然还支持functional, generative,metaprogramming等典范。

13. 语法学家不是文学家,所以当你学会了一门计算机语言时,你还需要学习数据机构和算法,还需要掌握工具和平台API的用法。

14. C/C++ 是通用语言,因此语法很复杂,你应当裁减成适合你自己的语法集合,比如裁减成 better C 和 ADT。

15. C/C++是通用语言,因此只含通用的库,你应该丰富自己需要的库,比如汽车工业协会有自己的C/C++函数/类/模板库。
第3个回答  2017-06-22
一、最简单地可以这样理解:
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网站。
第4个回答  2015-07-07
VisualBasic是一种可视化的面向对象的编程语言,以其编程简单、快捷等特点,深受广大WINDOWS程序员的青睐。
优点:利用VB开发界面友好、操作方便的软件只需很短的时间。
缺点:VB运行速度较慢

C语言是国际上非常流行的一种中级编程语言,以其灵活、高效等优点而获得广泛应用,许多的应用程序都是用C语言在DOS环境下编写而成。
其优点就是vb的缺点:速度比vb快
缺点:可视化不如vb

C语言与C++的区别有很多:
1,全新的程序程序思维,C语言是面向过程的,而C++是面向对象的。
2,C语言有标准的函数库,它们松散的,只是把功能相同的函数放在一个头文件中;而C++对于大多数的函数都是有集成的很紧密,特别是C语言中没有的C++中的API是对Window系统的大多数API有机的组合,是一个集体。但你也可能单独调用API。
3,特别是C++中的图形处理,它和语言的图形有很大的区别。C语言中的图形处理函数基本上是不能用在中C++中的。C语言标准中不包括图形处理。
4,C和C++中都有结构的概念,但是在C语言中结构只有成员变量,而没成员方法,而在C++中结构中,它可以有自己的成员变量和成员函数。但是在C语言中结构的成员是公共的,什么想访问它的都可以访问;而在VC++中它没有加限定符的为私有的。
4,C语言可以写很多方面的程序,但是C++可以写得更多更好,C++可以写基于DOSr程序,写DLL,写控件,写系统。
5,C语言对程序的文件的组织是松散的,几乎是全要程序处理;而c++对文件的组织是以工程,各文件分类明确。
6,C++中的IDE很智能,和VB一样,有的功能可能比VB还强。
7,C++对可以自动生成你想要的程序结构使你可以省了很多时间。有很多可用的工具如加入MFC中的类的时候,加入变量的时候等等。
8,C++中的附加工具也有很多,可以进行系统的分析,可以查看API;可以查看控件。
9,调试功能强大,并且方法多样。
第5个回答  2010-05-10
C:经久不衰的语言
主要应用在嵌入式编程,硬件驱动程序设计中
说白了是计算机底层的编程设计
优点是可以嵌入汇编,可以直接与硬件打交道,做底层开发
缺点是在企业级开发中,几乎无用武之地
我朋友是做这个的,在长沙这种小地方,年薪也能达到10万以上
与北京的java程序员收入差不多
在北京的话,年薪20万不是大问题。

c++ :我非常钦慕的语言,又AT&T的贝尔实验室研发
主要开发工具是微软的Visual C++和Borload的BCB(Borload C++ Builder)
优点在于含有大量的库,如MFC,可直接调用windows库函数干很多事情
其中的消息处理机制令我感觉尤为经典
缺点是,要想精通真不容易
主要领域一是做桌面程序,像QQ,迅雷这种桌面软件
领域二是做游戏后台开发,大部分游戏(包括魔兽等)后台语言就是使用C++
精通的话,收入和C程序员差不多

vc : 刚说过了,vc全名是(Microsoft Visual C++)
是微软研发的一种开发C++的开发工具(IDE)

vc++:同vc
注意c++是语言,vc++是工具,是一门使用c++语言的工具,记清楚,以后不要问这样肤浅的话。

以上几种,对比一下
学java,学的不仅仅是技术,而是一种思想
架构项目的思想
所以java是培养架构师,培养System Designer,Project Manager的
c语言和c++只能培养技术专家,资深程序员

vb:曾经很流行的一种桌面程序开发技术
微软研发的(Visual Basic)是一种工具,用的语言是Basic
Basic是比尔盖兹发家致富的一大工具
主要用来做桌面程序,C/S系统
后来因为Delphi的冲击,被强占一部分市场
现在有了.NET,基本上VB被淘汰是时间问题

顺带一提.NET
.NET : Microsoft Visual .NET
最新出了2005版(2007出的)
微软用来抗衡Java的新产品
主要市场是企业级开发,和SUN的java ee竞争尤为劲烈
在企业级开发里,基本上是java ee和.net平分秋色,其他的靠边站
在C/S B/S里表色都还算不错
用的语言有Basic c++
不过,目前在.NET平台里最流行的还是C#语言的开发
ASP.net winform,ADO.net技术都是使用 c#

c++和c语言的区别是什么?
c++与c语言的区别是对象不同、函数库不同、结构不同、设计思想不同。1、对象不同C语言是面向过程的,而C++是面向对象的。2、函数库不同C语言有标准的函数库,它们松散的,只是把功能相同的函数放在一个头文件中;而C++对于大多数的函数都是有集成的很紧密,特别是C语言中没有的C++中的API是对W...

c++和c语言的区别
一、主要语言特性差异 1. 动态内存管理:C语言需要程序员手动管理内存,包括分配和释放。而C++提供了自动垃圾收集机制,允许程序在不再需要时自动释放内存。这使得C++开发过程中更不易出现内存泄露问题。2.面向对象编程支持:C语言不支持面向对象编程,而C++则全面支持类、对象、继承、多态等面向对象概念。...

c语言和c++的区别
C语言和C++的区别 一、基础区别 C语言是一种过程式编程语言,注重过程和流程控制,而C++是面向对象的语言,更注重事物的属性和行为。这种基础差异导致了两者在编程思想、语法特性和应用领域的不同。二、语法特性 1. 面向对象特性:C++支持面向对象编程的三大特性:封装、继承和多态,而C语言则不具备这些...

c语言和c++语言有什么区别
1. 语法差异:虽然C++是基于C语言的,但两者在语法上存在诸多不同。例如,C++支持更多的数据类型和操作符号,如引用、动态内存分配等。此外,C++支持类和对象的概念,具有继承、多态等特性。而C语言更注重基本的数据操作和功能实现。2. 面向对象支持:C语言不支持面向对象编程,而C++则全面支持。面向对象...

c语言和c++语言的区别是什么?
C语言和C++语言的区别 一、基本区别 C++是C语言的扩展和增强版,它增加了面向对象编程的特性,如类、封装、继承和多态等。而C语言则是一种通用的、过程式的编程语言。二、详细解释 1.语言特性:C语言:以过程式编程为主,注重数据和程序的流程。它提供了基本的编程结构和功能,如函数、循环、条件语句...

c语言和c++语言的区别是什么?
C语言和C++语言的区别 一、语言特性的差异 1. 继承与扩展性: C++ 是 C 语言的扩展,继承了 C 语言的大部分特性,并增加了面向对象编程的特性,如类、封装和继承等。这使得 C++ 更适合于大型复杂项目的开发。而 C 语言主要是一种过程式语言,不具备面向对象的能力。2. 类型安全性: C++ 具有更...

c语言和c++语言有什么区别
一、基本区别 C++是C语言的超集,这意味着C++包含了C语言的所有特性,同时添加了更多高级功能和抽象概念。简单来说,所有有效的C程序在C++环境中也是有效的,但C++更具扩展性和灵活性。二、详细解释 1. 语言特性的扩展:C++相较于C语言增加了更多的特性,例如类、对象、继承、多态等面向对象编程的概念...

c++与c语言的区别是什么?
C++与C语言的区别 一、语言机制与特性差异 1. 编译器与代码运行效率的不同:C语言在编译时会尽量生成紧凑、高效的代码,执行效率较高。而C++除了保持C语言的效率外,还提供了更多高级特性如对象封装和多态,编译时需要生成更多用于管理对象的额外代码。这通常不会影响核心程序的执行速度,但对整体代码执行...

C语言和C++有什么区别?
一、主体不同 1、C语言:是一门面向过程的、抽象化的通用程序设计语言,广泛应用于底层开发。2、C++:是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计。二、优势不同 1、C语言:能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器...

c和c++具体区别 c++与c的区别
C和C++区别为:结构不同、设计不同、函数库不同。一、结构不同 1、C语言:C语言结构只有成员变量,而没成员方法。2、C++:C++结构中可以有自己的成员变量和成员函数。二、设计不同 1、C语言:C语言进行过程化、抽象化的通用程序设计。2、C++:C++既可以进行C语言的过程化程序设计,又可以进行以抽象...

相似回答