大话C语言和C++
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大话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的去抠,尽量搞清楚每一个问题。
***********************
C语言是C++语言的一个子集。
C++语言包含了C语言的全部词法和语法的内容,同时它增加了面向对象程序设计语言所必备的内容。
C为面向过程(pop)的语言,C++为面向对象(oop)的语言。
C++语言源程序中比C语言多一种数据类型-----类,也就是多一种变量-----对象。
***************************
从语法上讲: 不严格的说C是C++的子集,也就是C++包含C语言的大部分语法.当然由于C++和C都有不同的版本(ANSI/ISO),各编译器对标准支持的程度也不一样.C++不一定能百分百兼容C.
从编程思想上讲:
C是典型的命令式编程,也就是作者精确的设计出程序的每一个过程.程序一步步的执行.
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++中它没有加限定符的为私有的。
4,C语言可以写很多方面的程序,但是C++可以写得更多更好,C++可以写基于DOSr程序,写DLL,写控件,写系统。
5,C语言对程序的文件的组织是松散的,几乎是全要程序处理;而c++对文件的组织是以工程,各文件分类明确。
6,C++中的IDE很智能,和VB一样,有的功能可能比VB还强。
7,C++对可以自动生成你想要的程序结构使你可以省了很多时间。有很多可用的工具如加入MFC中的类的时候,加入变量的时候等等。
8,C++中的附加工具也有很多,可以进行系统的分析,可以查看API;可以查看控件。
9,调试功能强大,并且方法多样
******************************
(1)C++与C语言相比有何特点
全面兼容C语言;支持面向对象编程;C++的可重用性、可扩充性以及可维护性较好。
(2)C++与C语言程序结构有何不同
C语言的程序结构主要包括预处理程序、自定义类型说明、常量定义、函数定义以及主函数定义几大部分;
C语言的程序结构在C++中也是适用的,此外C++还有类的定义和使用两个主要组成部分。
(3)C++与C语言如何处理输入输出
C语言中使用scanf()函数实现格式化输入,使用printf()函数实现格式化输出。如果输入和输出函数中格式化类型与实际类型不符时,C编译器无法检查出错误,但是程序运行时会出现问题。
C++采用了流的形式来控制输入和输出操作,cin为标准输入流,cout为标准输出流;即使输入输出语句中定义了不同类型的数据,在编译和执行过程中将不会出现任何错误信息。
(4)C++与C语言中局部变量的声明方式有何不同
c语言中,全局变量必须声明在所有函数之前,局部变量必须声明在所有可执行语句之前;
C++中允许在代码模块中的任意位置对局部变量进行声明。
(5)C语言允许函数重载么?C++对于函数重载有什么要求?
C语言中不存在函数重载的概念,不允许出现名称相同的函数;
C++允许重载函数,即对于函数参数类型不同、参数个数不同或者参数类型和个数都不同的情况。
(6)处理动态存储分配问题时C++和C语言有何不同?
C语言中使用malloc()函数分配动态内存空间,使用free()函数释放动态内存空间;由于malloc函数返回的是void型指针,因而需要强制转换类型。
C++则采用new和delete操作符,new可以自动计算所要分配的内存大小,并返回正确的指针类型;new 可以自动调用构造函数。
以上是关于大话C语言和C++的主要内容,如果未能解决你的问题,请参考以下文章