c语言、c++和c#的区别在哪?
c语言、c++和c#的区别在哪?
-----
网友解答:
-----
十年老程序猿!碰巧,3门语言都比较熟悉!来说说我的看法!
C语言
C语言,是我入门的编程语言,因为我是计算机专业。
C语言,贴近硬件底层,面相过程,语法特性相对较少,语法相对简单。
但是因为贴近底层,比较难入门,难精通,尤其是指针(二级指针,函数指针,指针函数。。。),让无数人折腰!
C++
正好也是我大学的课程!工作之后,也一直是主力语言在用。
C++是C语言的超集,支持C语言全部特性。然后加入面向对象的特性,功能比C语言更强大。
但是由于新特性的加入,导致复杂度变高,入门更难,执行效率相比C语言有所下降(相对于其他编程语言,还是最快的梯队)。
C++还有一个让人诟病的地方,就是编译速度慢!一个大型模块,编译几分钟是常事!
C#
C#(读作C Sharp)则属于后起之秀,属于非常现代的编程语言,集很多编程语言的优点于一身,除了C和C++,还吸纳了Java等语言的很多优点。
同时C#又比较适合入门,虽然他博采众长,但是复杂度并不高,对语法做了简化,引入众多语法糖,程序看起来很优雅简洁;C#对内存管理进行简化,取消了指针,自动管理大部分内存。这些对新手入门,很友好。
此外,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语言程序设计是过程性的程序设计语言,它的发展贯穿了计算机发展的历程,它蕴含了程序设计的基本思想,囊括了程序设计的基本概念,所以它是理工科高等院校的一门基础课程。
目前最著名、最有影响、应用最广泛的windows、linux和UNIX三个操作系统都是用C语言编写的。由此可以肯定地说,c语言是一门十分优秀而又重要的语言。
C++
C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。C++是C语言的扩充,应用非常广泛。常用于系统开发,引擎开发等应用领域,支持类、封装、继承、多态等特性,这使它在短短几年内迅速流行起来,C++在软件开发领域有着杰出的贡献
C#
C#是微软公司发布的一种由C和C++衍生出来的面向对象的编程语言、运行于.NET Framework和.NET Core(完全开源,跨平台)之上的高级程序设计语言。C#借鉴了C++的语法,与Java的语言特性相似,但是C#与Java有着明显的不同,它借鉴了Delphi的一个特点,与COM(组件对象模型)是直接集成的,而且它是微软公司 .NET windows网络框架的主角。
C#与C++ 比较的话,最重要的特性就是 C# 是一种完全面向对象的语言,而 C++ 不是,另外 C# 是基于 IL 中间语言和 .NET Framework CLR 的,在可移植性,可维护性和强壮性都比 C++ 有很大的改进
C#的设计目标是用来开发快速稳定可扩展的应用程序,当然也可以通过Interop 和 Pinvoke 完成一些底层操作,但是对于一些和底层系统相关很紧密的程序(譬如说驱动程序),还是建议用 C++ 来写
C++ 不允许在一个构造函数中调用另外一个构造函数(称为委派构造函数调用),而 C# 则允许。委派构造函数调用语法上非常自然和易懂,事实上, C++ 不提供这一特性并不是出于语法上的考虑,而是出于资源管理的考虑(这样的事情对 C++ 来说还有很多很多)。
C# 无疑是非常好的编程语言,它几乎集中了所有关于软件开发和软件工程研究的最新成果。面向对象、类型安全、组件技术、自动内存管理、跨平台异常处理、版本控制、代码安全管理。
计算机软件开发,发展到现在,其实已经是很细分的市场,有专门的应用软件市场,也有系统软件市场,C\u002FC++和Java等,各自应对的是不同的市场,因此,二者其实没有可比性的。
建议已经选择Java、.net等其他语言方向的同学,不要跟风,在自己的领域深入进去,你们也能成为牛人的。
如有不同观点,欢迎发表评论。如果喜欢我的回答,欢迎“点赞、分享”。
-----
网友解答:
-----
用建筑工程来做比喻,你的目标是盖一座大楼。用C语言,你需要会设计,更重要的是你要懂得如何配置水泥,砖块如何烧制,钢筋怎么通过冶炼得到,甚至你还要会开采铁矿石,等等。用C++,相对来说差不多,有一些现成的东西可以用,但你仍然需要知道整个大厦的力学结构,用什么样的材料等。你要是用C#那就简单多了,各种各样的钢筋水泥混凝土都给你准备好了,你只需要会设计大楼,按照图纸把现成的各种合适的材料放到适当的位置就行了,你根本不用关心水泥是什么成分、铁矿石如何开采冶炼。我说清楚了没有
-----
网友解答:
-----
虽然这三种语言都是看上去很像,但在设计理念和具体开发中,还是有不少区别的。
下面我们来分别介绍一下这几种语言:
C语言
在这三种语言中,C算是资历最老的一个。C诞生与1972年,由美国贝尔实验室的王牌程序员dmr和ken两人联手打造,并在日后进行了多次版本更新。
C语言是所有计算机行业从事的必修科目,,它兼顾了高级语言和汇编语言的优点,也是高级语言中最像低级语言的一种,所以有人称C是“中间语言”。一方面,C的效率很高,只比汇编低10%~20%,这是其他高级语言所不能媲美的。另一方面,C极为贴近硬件层面,也就是人们常说的“直接操纵硬件”。所以C语言常被用来写系统和框架,像Linux,windows的内核都是用C来实现的。同时,C语言还是不少高级语言的“爹”,java,python等语言都参考了C的基础。当然了C也有缺点,比如不够严谨,同时太过信任程序员,所以C入门很简单,但想精通难度非常大,一些干了十几年的嵌入式工程师也不敢说自己C做的很好。
C++
顾名思义,C ++就是C的加强版。但两者有着本质的区别,C是面向过程的,着重与如何设计出算法和数据结构。而C++是面向对象的,更侧重封装、继承、抽象等设计。
C++可以看做是C的一种拓展,增加了诸如重载,内敛函数,异常处理等功能, 随着时间的推延,这些功能还在不断的更新递进。
C++既保留了C语言的灵活性,简洁高效和接近汇编底层语言等的特点,又增加面向对象等特点。用C++写的代码可读性好,运行效率高。
但这也是C++比较尴尬的一点,有些“四不像”,所以C++这门语言很不好学,连入门都难,许多人看到C++各种异常机制,泛型函数,运算符重载等等复杂的内容后,就打了退堂鼓。C++应该是这三种语言中最不好学的。
C#
这是一种由C、C++衍生出来的,面向对象的编程语言。C#比较年轻,2000年由微软推出。C#与C\u002FC++具有极大的相似性,熟悉类似语言的开发者可以很快的转向C#它比C更安全稳定,也撇弃了C++中一些复杂的特性。现在C#已经是4.0版本,支持动态编程,是.NET开发的首选语言。
C#也有缺点,因为这是一种比较新的语言,所以在一些老版本的win系统,比如说xp,win7上存在兼容性问题,在linux平台上也会存在不支持的现象。但由于windows的霸主地位,C# 将不可避免地崛起。
-----
网友解答:
-----
简单的来说,c语言比较接近底层,也是第一代c系列语言,用.txt文本都可以写.
c++是在c的基础上添加了更多的功能,但是同样也可以用文本编辑器来写,相当于c的扩展版本。
c#是微软基于.net平台完全新写的一门语言,跟c\u002Fc++完全没关系了,c#编写的程序需要在.net平台上运行,性能完全没办法和c\u002Fc++相比,但是比c\u002Fc++开发效率更高,相当于微软把一些现成的功能封装成.net平台了,你直接调用就可以了。
-----
网友解答:
-----
C也是一门低级的编程语言,它的效率和汇编接近。它提供了基本级(base-level)的访问内存方式,对运行时支持的要求非常小。
尽管它已经诞生了40多年,但是它依然得到广泛的使用(译者注:看TIOBE就知道了,2019年12月排名第二,仅次于Java)。开发人员仍然使用它在操作系统、内核级软件开发、硬件驱动和需要与旧代码一同工作的应用程序上。
许多老牌的学校会建议C语言作为首选语言,因为许多后来的语言借鉴了C。由于C的年龄原因,使用C也可能带来一些安全性的提升。因为使用C的用户比较少,因此它比较不容易成为黑客的目标。
C++
C++是作为C的扩展来开发的。它是由丹麦的哲学博士(Ph.D.)Bjarne Stroustrup开发的。他的目标是增强C语言并在不牺牲速度和效率的前提下为其增加面向对象(object-oriented)的能力。
C++被认为是一种中级的语言,因为它基于低级的C语言所创建并拥有一些高级的能力。
自从1985年其发布以来,它已成为了另一个高产的编程语言。在开发操作系统时它会和C一同协作,但是在一些high-profile服务器和PC软件上也能看到它的身影。
译者注:high-profile,可以理解为高调的意思,例如游戏PC领域的雷蛇、外星人系列。
如果你的C语言功底扎实,那么你理解C++也是易如反掌;不过,如果你想立刻体验面向对象编程的话,也可以将C++作为你的第一门编程语言。(译者注:不是应该第一时间先找个对象吗?)
C#
C#是一门高级的面向对象的编程语言,同样也是作为C的扩展所创建的。它是在2002年,由微软的一个团队的领头人Anders Hejlsberg开发的。它是基于.NET框架的,但是它的核心依然是C语言。
C#将代码编译成字节码(byte-code)而不是机器码(0101的二进制)。这意味着它会在一台虚拟计算机上运行,这台虚拟机实时(on the fly)将字节码翻译成机器码。它在C语言的基础上添加了垃圾回收(garbage collection)、未初始化的变量检查(uninitialized variable checking)、边界检查(bound checking)和类型检查(type checking)这些特性。
译者注:翻译到这里的时候我就想到了Java以及JVM。
C#常见于内部或者企业应用而不是商业软件。可以在.NET框架中的客户端和服务器端开发中找到。
虽然C#是三门语言中技术上最复杂的,但是它的语法相对于C和C++来说更不容易出错,因此相对来说它的学习会更快点。
主要的区别
虽然C和C++有许多的不同但是它们本质上是非常相似的编程语言。C#的话,换句话说它和Java会更相似。
C vs. C++
要完全理解C和C++的区别,你需要理解什么是面向对象。编程语言中的面向对象这个术语,最早起源于上个世纪50年代末或者60年代初,由麻省理工学院(MIT)提出。
面向对象编程(OOP)使用了一种叫做对象(object)的概念。一个对象是一个类(class)或者一个程序代码模板的实例。类可以由数据和代码过程(procedure,也叫做方法(method))组成。
C语言是不支持面向对象的,这也是它和C++的最大的区别。C是纯过程式(procedural)编程语言,而C++是既支持过程式又支持面向对象的混合编程语言。
以下是C和C++的其他不同点。
C++作为C的扩展,意味着它可以运行大部分C代码。但是反过来,C去运行C++的代码,就不行了。
作为一种面向对象的语言,C++支持多态(polymorphism)、封装(encapsulation)和继承(inheritance),但是C不支持。
在C中,数据和函数是“自由的实体”(free entities),这意味着你可以使用外部代码来操作它们。但是由于C++将数据和函数封装到一个单一的对象,就等同于对外部代码隐藏了,所以外部代码无法操作其数据和函数。
C++使用名称空间(namespace)将代码组织为逻辑组并阻止了名称冲突(collision)。当你的代码基(code base)包含了多个库的时候会发生名称冲突。C不使用名称空间。
C使用函数来实现输入和输出,而C++使用对象来实现输入和输出。
C++支持引用变量(reference variable),而C不支持。引用变量是已存在变量的别名,可用于加速编码。
C不支持错误和异常处理,但是C++支持。
C++ vs. C#
作为一款更现代的编程语言,C#被设计于与当前微软.NET框架共同工作,在客户端和web应用程序中均有涉猎。
C++是一门面向对象的语言,而C#被认为是一门面向组件(component)的编程语言。面向对象编程聚焦于将多个类结合起来链接为一个可执行的二进制程序,而面向组件编程使用可交换的代码模块(可独立运行)并且你不需要知道它们内部是如何工作的就可以使用它们。
以下是C++和C#的主要区别。
C++将代码编译成机器码,而C#将代码编译成CLR(一种.NET框架的虚拟机组件,它会被ASP.NET所解析)。
C++要求用户手动处理内存,但是C#运行在虚拟机中,而虚拟机会自动处理内存。
C#不使用指针(pointer),而C++可以在任何时候使用指针。
虽然C++的设计是用于Unix或类Unix的系统,但是它可以运行在任何的平台上。C#虽然已标准化,但是基本上只在Windows的环境下运行。
C++可以创建独立(stand-alone)和控制台(console)程序。C#可以创建控制台,Windows,ASP.NET和移动(mobile)程序,但不能创建独立程序。
C vs. C#
虽然C和C#在技术上相互有所关联,但是它们几乎是完全不同的语言,因此它们之间有更多的不同之处。有C语言功底的同学在学习C#时会比较简单,因为有些语法是相似的;不过,即使你没有C语言基础一样可以轻松学习C#,因为它的语法非常简单(译者注:原文是forgiving,宽容)。
-----
网友解答:
-----
这三者不能一概而论的,就个人总结来看觉得有一下区别:
C与C++的区别
1.
C 语言是面向过程的,而 C++ 是面向对象的。
2,C 语言有标准的函数库,它们松散的,只是把功能相同的函数放在一个头文件中;而 C++ 对于大多数的函数都是有集成的很紧密,特别是 C 语言中没有的 C++ 中的 API 是对 Window 系统的大多数 API 有机的组合,是一个集体。但你也可能单独调用 API。 3,特别是 C++ 中的图形处理,它和语言的图形有很大的区别。C 语言中的图形处理函数基本上是不能用在中 C++ 中的。C 语言标准中不包括图形处理。 4,C 和 C++ 中结构体:C的结构体内不允许有函数,而C++的结构体内部允许有成员函数(允许有构造函数、析构函数和this指针),且允许这个函数是虚函数;C的结构体对内部成员变量的访问权限只能是public,而C++允许public,private,protected三种;C的结构体是不可以继承的,C++的结构体是允许从其他结构体或者类继承的;
4,C 语言可以写很多方面的程序,但是 C++ 可以写得更多更好,写 DLL,写控件,写系统。 5,C 语言对程序的文件的组织是松散的,几乎是全要程序处理;而 C++ 对文件的组织是以工程,各文件分类明确。 6,C++ 中的 IDE 很智能,和 VB 一样,有的功能可能比VB还强。 7,C++ 对可以自动生成你想要的程序结构使你可以省了很多时间。有很多可用的工具如加入 MFC 中的类的时候,加入变量的时候等等。 8,C++ 中的附加工具也有很多,可以进行系统的分析,可以查看 API;可以查看控件。 9,调试功能强大,并且方法多样。
C#
语言与
C++
的区别:
1.C# 与 C++ 比较的话,最
重要的特性就是 C# 是一种完全面向对象的语言,而 C++ 是既面向过程又面向对象的语言
,另外 C# 是基于 IL 中间语言和 .NET Framework CLR 的,在可移植性,可维护性 和强壮性都比 C++ 有很大的改进
([1]C++是C语言的继承,它既可以进行C语言的过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。
[2]面向对象主要是说,在系统设计和实现上用的思想,面向对象的思想的运用,就是先从系统需求中确定类,然后按类实例化对象,对象之间的通信就实现了系统的功能。
[3]面向过程,即系统的实现是分过很多按流程或工序设计的不同功能(函数)来实现,就是先干什么,后干什么,主要是靠函数的调用,因为面向过程没有对象,所以这些函数不属于任何对象,没有封装、继承等的灵活运用,系统一旦庞大,其设计和实现的复杂性和可控性跟面向对象不是一个数量级的。)
2.
C#不支持多重继承,这是与C++明显区别的地方.
3.在标准的C#安全代码中
不支持指针类型的操作
,然而,你却能在微软所谓的“非安全代码”中操作指针类型对象。
4.
C#中所有对象都只能通过关键词“new”来创建
,C++的“类名_对象名”方式在C#中变为声明一个引用。呵呵,万物皆对象,连常见的数据类型都变为对象了,JAVA味道很浓。
5.在C#里面,数组的元素都是存放在托管堆里面,比起C++的在内存里不确定位置申请一块连续空间要安全得多。
6,C++的switch后跟参数必须是int型,而C#却允许string型,这点改进觉得真的是比以前方便多了!
7.C#会禁止所有switch..case语句的失败情形,除非case语句后是空格,否则执行了前一个case语句就算没有break也会停止执行后面的case语句。
8.在异常处理上,C++允许抛出任何类型,而C#中规定抛出类型为一个派生于System.Exception的对象。
9.C++的宏在C#中被抛弃了很多,而且也不建议使用,因此很少见。
10.C++的模板在C#里没有了,但在C#中我们找到了能完成模板任务的更锋利的武器:委托。
11.C++的全局变量这一概念没有了,C#和JAVA类似,要把所有东西都放在类里面,还建议使用命名空间包含起来。
12.C#可以在定义类的时候直接给属性赋值,而C++这么做却会编译出错。
13.C#里有静态构造函数一个概念,这个构造函数只执行一次,因此能够保证一些静态成员只被初始化一遍。
14.C#有自动垃圾收集机制,防止内存泄露,把C++程序员从繁重的内存管理上解放出来。
15.更强的类型转换保护机制,比如说把float转成uint,直接转换0.35会变成0.34,是因为二进制无法表示这样的数字,使用System.Conver里的方法,可以安全地把类型安全转换过来。
16.委托与事件、装箱与取消装箱、Web Services……一大堆C++没有的新东西,我感觉是做大型项目方便了管理,也容易扩充,但做起小型项目,由于是编译成IL代码的,运行需要.NET Framework SDK支持,效率是个问题,不利于做那些对运算速度和内存消耗要求高的项目。
17.C# 的设计目标是用来开发快速稳定可扩展的应用程序,当然也可以通过 Interop 和 Pinvoke 完成一些底层操作,但是对于一些和底层系统相关很紧密的程序(譬如说驱动程序),还是建议用 C++ 来写 18.C++ 不允许在一个构造函数中调用另外一个构造函数(称为委派构造函数调用),而 C# 则允许。委派构造函数调用语法上非常自然和易懂,事实上, C++ 不提供这一特性并不是出于语法上的考虑,而是出于资源管理的考虑(这样的事情对 C++ 来说还有很多很多)。 C++ 的构造函数用于分配资源,而析构函数用于释放资源,构造函数和析构函数调用必须匹配,否则就打破了 C++ 的基本规则。如果允许委派构造函数调用,则显然会打破这一规则——构造函数被执行两次,而析构函数只执行一次。当然,对一些类,例如前面的那个 Point 来说这不是个问题,但是从语言机制的角度讲这个特性可能属于“危险”的特性。注:在最新的 C++ 标准提议草案中,Herb 等人有一个关于允许委派构造函数调用的提案,当然这很大程度上是为了方便 C++ \u002FCLI 绑定。
-----
网友解答:
-----
1、语言使用难度不同
C++难度大于baiC#大于C语言。
2、面向du的对象不同
C 语言是面向过程的,而 C++ 是面向对zhi象的,C# 是一种完全面向对象的语言。
3、函数形式不同
C 语言有标准的函数库,它们松散的,只是把功能相同的函数放在一个头文件中;而 C++ 对于大多数的函数都是有集成的很紧密,特别是 C 语言中没有的 C++ 中的 API 是对 Window 系统的大多数 API 有机的组合,是一个集体。
C++ 不允许在一个构造函数中调用另外一个构造函数(称为委派构造函数调用),而 C# 则允许。
4、图形处理能力不同
C 语言标准中不包括图形处理。
扩展资料:
C语言的优势
C语言的优点很多,主要的有如下四点:
1、兼备高级语言与低级语言的优点,属于一种中间语言。
2、它是一种结构化程序设计语言,非常适合结构化程序设计。
3、有较丰富的数据类型、运算符以及函数供以选用。
4、直接与内存打交道,使修改、编辑其他程序与文档变得轻松,简单。
-----
网友解答:
-----
戏说:
很简单的说,
C语言
的升级(plus)版是
C++
(CPlusPlus),那
C++
的升级版就是
C#(C++++)
。在实际的编程中,语言的便捷性也是如此,C#代码的便捷性要大于C++,C++的便捷性要大于C语言。
专业角度:
C语言是面向过程的语言,C++和C#都是面向对象编程语言。
C语言指针的应用比较多,比较繁琐,C++优化了很多,减少指针的操作,C#语言基本上不需要设计指针。PS:为什么说指针的?因为指针真的很绕。。。。
------------------
推荐阅读:
得罪了爱报复心理的人,或是一根筋,或是一直有气的人有多让人厌?
CBA常规赛,沈梓捷暴走,杜锋因杜润旺失误而发怒,你怎么看?
上一篇:学习的最高境界是什么?
下一篇: 金陵十二钗正册都有谁?