2 u012514974 u012514974 于 2013.12.16 19:15 提问

c c# c++的区别是什么?急切求指导

求大神指教,C c# c++的区别???听说学这行必须会c语言,但是不懂c语言和c# c++有什么区别????

3个回答

u011261198
u011261198   2013.12.16 22:28

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,调试功能强大,并且方法多样。

鉴于当下形势, 如果要学的话就学 C#

C# 与 C++ 比较的话,最重要的特性就是 C# 是一种完全面向对象的语言,而 C++ 不是,另外 C# 是基于 IL 中间语言和 .NET Framework CLR 的,在可移植性,可维护性 和强壮性都比 C++ 有很大的改进

C# 的设计目标是用来开发快速稳定可扩展的应用程序,当然也可以通过 Interop 和 Pinvoke 完成一些底层操作,但是对于一些和底层系统相关很紧密的程序(譬如说驱动程序),还是建议用 C++ 来写

C++ 不允许在一个构造函数中调用另外一个构造函数(称为委派构造函数调用),而 C# 则允许。委派构造函数调用语法上非常自然和易懂,事实上, C++ 不提供这一特性并不是出于语法上的考虑,而是出于资源管理的考虑(这样的事情对 C++ 来说还有很多很多)。

C++ 的构造函数用于分配资源,而析构函数用于释放资源,构造函数和析构函数调用必须匹配,否则就打破了 C++ 的基本规则。如果允许委派构造函数调用,则显然会打破这一规则——构造函数被执行两次,而析构函数只执行一次。当然,对一些类,例如前面的那个 Point 来说这不是个问题,但是从语言机制的角度讲这个特性可能属于“危险”的特性。注:在最新的 C++ 标准提议草案中,Herb 等人有一个关于允许委派构造函数调用的提案,当然这很大程度上是为了方便 C++ /CLI 绑定。

在 C++ 构造函数中,虚函数调用会被编译器自动转为普通函数调用,而在 C# 构造函数中允许进行虚函数调用。 C++ 这样处理自然有它的原因——在 C++ 中,构造函数执行完成后对象才初始化好,对于多态对象来说,也就意味着构造函数在背后执行了很重要的一件事情——初始化对象的虚函数表。

如 果我们在基类的构造函数中调用了虚函数,则因为此时对象的虚函数表仍旧是基类的虚函数表,所以无法进行正确的虚函数调用。
也就是这个原因,通常我 们应该避免在构造函数中调用虚函数,因为它违背了虚函数的语义。
而在 C# 中,在对象的构造函数执行之前对象的类型信息就已经初始化好了,所以可以进行正常的虚函数调用。

u012514974
u012514974 谢谢
4 年多之前 回复
carl_zd
carl_zd   2013.12.17 18:13

三者的语法确实有很多类似之处,名字也类似。楼上已经说了不少细节,我来说点粗线条的。
1.从语言的出生来看,C最早,C++次之,C#最晚,并且一直在发展,C和C++已经有国际标准,C#目前还没有。
2.从语法的关键字来讲,C最少,C++次之,C#最多,所以,一般规模的解决方案,C#编码最简单,C++次之,C可能最复杂,相应地,C可能使用了最多的技巧,C#几乎不用技巧,C++介于二者之间。
3.从应用范围来讲,由于现在直接用汇编的人已经比较稀少了,嵌入式开发很多都是用C,甚至C++,而C#目前还没有见过用于嵌入式的,C#替代以前的VB6做桌面GUI开发或者部分替换JS做Web开发都还不错。
4.用C入门编程确实不错,但是也不是必须的。我的感觉是,习惯了C/C++,用C#有一种不在掌握的无力感,
但是程序确实做的快。我想,如果习惯了C#,再做C或者C++,如果注意到语法上的不同,写出合格的代码不会成为主要问题,难的可能是心理上觉得代码写的很麻烦、罗嗦。

u012514974
u012514974 谢谢
4 年多之前 回复
DoctorCZM
DoctorCZM   2013.12.19 16:11

简单来说
c是面向过程的语言,新手上手较快,其功能十分强大,目前使用c语言的使用排在语言榜第一们,编写程序rvtf效率较高。
c++即可以面向过程,也可面向对象,面向过程的部分与c相似,c++与c是兼容的。面向对象编程来自于软件工程思想,实现软件的利用,带来方便,也便于调试,不过由于封装带来的开销也在所难免。
c#是纯面向对象的。

u012514974
u012514974 谢谢
4 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
懒惰学习和急切学习
懒惰学习在训练阶段仅仅是把样本保存起来,训练时间开销为零,待收到测试样本后再进行处理。急切学习在训练阶段就对样本进行学习处理的模型
C/C++、JAVA、C#之间的关系和区别?
C/C++、JAVA、C#之间的关系和区别?
C,C++,C#,java的区别
转载连接:点击打开链接 C,C++,C#,java的区别    简单地说,它们不是一种语言,语法有差别,编程时具体用到的类库或者函数库也不一样。   虽然它们不是一种语言,不过它们却也有所联系。广泛地说,C可以看作其他三种语言的源语言,因为其他三种语言几乎都是从C而来的,无论从数据类型还是控制语句看,其他三种语言都有从C得来的迹象。   其中C++则一般看作是对C语言
C#与C/C++部分基础语法差异
博主最近在学习C#,以前摸过C和C++在学习C#基础语法时可以快速的略过,但是C#的基础语法和C和C++还是有差异,有的甚至是完全不同的,我在这里写出来打算加强自己的记忆与理解,同时希望能对其他准备开始学习C#的朋友有帮助。 输入,类型转换 C或者C++中使用scanf,cin输入,不再赘述。 C#中使用Console.ReadLine(); 将会读入一串字符串,以换行符结尾。 然
C语言程序设计学习指导 第2版
《C语言程序设计学习指导(第2版)》是国家精品课程主讲教材《C语言程序设计(第2版)》(ISBN:978-7-04-037704-0)的配套参考书。   全书共2章,第1章为习题解答,包括主教材中的全部习题及解答。第2章为实验指导,共6部分。第1部分主要介绍VisualC++6.O和Code::Blocks+gcc+gdb(为方便起见,《C语言程序设计学习指导(第2版)》将其简称为Code::Blocks)集成开发环境下的标准C语言程序的调试方法;第2部分提供以程序设计方法和数据结构为主线设计的实验题目,内容既有趣味性,又有很强的应用背景,采用问题和任务驱动的方式,指导读者循序渐进地完成程序设计;第3部分介绍基于C/S结构的C语言编程题考试自动评分系统;第4部分介绍基于B/S结构的C语言编程题考试自动评分和题库管理系统;第5部分介绍在线评判网站的使用方法;第6部分介绍C语言程序设计的学习方法。   《C语言程序设计学习指导(第2版)》可作为高等学校各专业“C语言程序设计”课程的教学参考书和计算机等级考试的参考书。
C,C++,C#,Java?这些有什么区别?
c,c++,c#,java?这些有什么区别?   C语言: 目前最著名、最有影响、应用最广泛的windows、linux和UNIX三个操作系统都是用C语言编写的。0S是计算机系统(由软硬件两个子系统构成)的核心和灵魂,它是软件中最庞大最复杂的系统软件。既然如此庞大复杂的0S都可以用c语言编写,从狭义而言,还有什么系统软件和应用软件不能用c语言编写呢?由此可以肯定的说,c语言是一门
C语言程序设计教程 姜恒远主编 上机实验答案(全)
C语言程序设计教程学习指导 姜恒远主编 上机实验1到实验17参考答案
C#中各种集合类比较
数组(Array)的不足(即:集合与数组的区别) 1. 数组是固定大小的,不能伸缩。虽然System.Array.Resize这个泛型方法可以重置数组大小,但是该方法是重新创建新设置大小的数组,用的是旧数组的元素初始化。随后以前的数组就废弃!而集合却是可变长的。 2. 数组要声明元素的类型,集合类的元素类型却是object。 3. 数组可读可写不能声明只读数组。集合类可以提供Re
c和c++的区别c和c++的区别
c和c++的区别c和c++的区别c和c++的区别c和c++的区别c和c++的区别c和c++的区别c和c++的区别c和c++的区别c和c++的区别
C语言程序设计学习指导+苏小红第2版+课后习题答案解析+学习辅导
C语言程序设计学习指导+苏小红第2版+课后习题答案解析+学习辅导