⑴ c语言现在主要应用与哪方面
不知道楼主平常玩不玩LINUX,有没有看过开源代码。国内的嵌入式程序员需求还是很大的,C程序员的找工作方向细分:
1、内核程序员 (为特定产品定制内核,你可能需要在一个稳定版本的内核基础上增加一些内容以满足公司产品的需求)
2、驱动软件设计人员 (这个就不用多说了,和1一样都是干的越久越吃香的)
3、应用程序设计 (其实也不差,只不过大部分人都只是移植一下开源代码,写写脚本,如果你的水平真的很牛,也不会比前两者差的)
以上只是拿linux平台举例,还有很多其他的类UNIX平台。C语言可不止仅仅用在嵌入式开发这一个方面,大家熟知的apache-http-server、mysql、php等等很多着名软件都是用C开发的,有兴趣可以去www.freshmeat.net 和 www.sourceforge.net 等开源网站去下载一些优秀的开源代码学习一下。
推荐的看代码工具是 Source Insight 3.5 。
---------------------------------------------------------------
自己
⑵ C语言和JAVA有什么区别用作的方向也不一样吗
C是面向过程的语言,JAVA是面向对象的语言,个人认为不能单纯地比较好坏
在速度上,C语言编写的程序要优于JAVA,因为JAVA必须运行在虚拟机的环境中,这就是很多桌面应用程序都不用JAVA写的原因,但是,正是因为虚拟机,JAVA获得的平台无关性,而C的程序有可能需要重新修改编译才能实现平台的移植;另一方面,C语言比JAVA语言更“底层”,因此可以用C编写例如硬件的驱动,而JAVA在这方面则力不从心。
JAVA主要的应用是在网络上,尤其是分布式系统的开发,这是C或者其他语言所不能及的(或者很难实现),C语言则在桌面的应用程序或者嵌入式开发中占有一定的地位
⑶ c语言是面向过程的还是面向对象的
c语言是面向过程的。面向过程是着重于其中程序设计的算法、语言的运用,如设计不同功能的函数。
C++是面向对象的。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。
c语言的特点:
1、代码具有较好的可移植性
C语言是面向过程的编程语言,用户只需要关注所被解决问题的本身,而不需要花费过多的精力去了解相关硬件,且针对不同的硬件环境,在用C语言实现相同功能时的代码基本一致,不需或仅需进行少量改动便可完成移植,这就意味着,对于一台计算机编写的C程序可以在另一台计算机上轻松地运行,从而极大的减少了程序移植的工作强度。
2、可生成高质量、目标代码执行效率高的程序
与其他高级语言相比,C语言可以生成高质量和高效率的目标代码,故通常应用于对代码质量和执行效率要求较高的嵌入式系统程序的编写。
⑷ 有谁能提供如何用C语言实现面向对象,而且要具体的文档,谢谢!最好是中文的,本人英文水平不是很好!
个问题每星期都会在游戏开发论坛上被问上好几次。这是个很好的问题,但是,没人能给出简单的答案。在某些应用程序中,总有一些计算机语言优于其他语言。下面是几种用于编写游戏的主要编程语言的介绍及其优缺点。希望这篇文章能帮助你做出决定。
1、C语言
如果说FORTRAN和COBOL是第一代高级编译语言,那么C语言就是它们的孙子辈。C语言是Dennis Ritchie在七十年代创建的,它功能更强大且与ALGOL保持更连续的继承性,而ALGOL则是COBOL和FORTRAN的结构化继承者。C语言被设计成一个比它的前辈更精巧、更简单的版本,它适于编写系统级的程序,比如操作系统。在此之前,操作系统是使用汇编语言编写的,而且不可移植。C语言是第一个使得系统级代码移植成为可能的编程语言。
C语言支持结构化编程,也就是说C的程序被编写成一些分离的函数呼叫(调用)的集合,这些呼叫是自上而下运行,而不像一个单独的集成块的代码使用GOTO语句控制流程。因此,C程序比起集成性的FORTRAN及COBOL的“空心粉式代码”代码要简单得多。事实上,C仍然具有GOTO语句,不过它的功能被限制了,仅当结构化方案非常复杂时才建议使用。
正由于它的系统编程根源,将C和汇编语言进行结合是相当容易的。函数调用接口非常简单,而且汇编语言指令还能内嵌到C代码中,所以,不需要连接独立的汇编模块。
优点:有益于编写小而快的程序。很容易与汇编语言结合。具有很高的标准化,因此其他平台上的各版本非常相似。
缺点:不容易支持面向对象技术。语法有时会非常难以理解,并造成滥用。
移植性:C语言的核心以及ANSI函数调用都具有移植性,但仅限于流程控制、内存管理和简单的文件处理。其他的东西都跟平台有关。比如说,为Windows和Mac开发可移植的程序,用户界面部分就需要用到与系统相关的函数调用。这一般意味着你必须写两次用户界面代码,不过还好有一些库可以减轻工作量。
用C语言编写的游戏:非常非常多。
资料:C语言的经典着作是《The C Programming Language》,它经过多次修改,已经扩展到最初的三倍大,但它仍然是介绍C的优秀书本。一本极好的教程是《The Waite Group's C Primer Plus》。
2、C++
C++语言是具有面向对象特性的C语言的继承者。面向对象编程,或称OOP是结构化编程的下一步。OO程序由对象组成,其中的对象是数据和函数离散集合。有许多可用的对象库存在,这使得编程简单得只需要将一些程序“建筑材料”堆在一起(至少理论上是这样)。比如说,有很多的GUI和数据库的库实现为对象的集合。
C++总是辩论的主题,尤其是在游戏开发论坛里。有几项C++的功能,比如虚拟函数,为函数呼叫的决策制定增加了一个额外层次,批评家很快指出C++程序将变得比相同功能的C程序来得大和慢。C++的拥护者则认为,用C写出与虚拟函数等价的代码同样会增加开支。这将是一个还在进行,而且不可能很快得出结论的争论。
我认为,C++的额外开支只是使用更好的语言的小付出。同样的争论发生在六十年代高级程序语言如COBOL和FORTRAN开始取代汇编成为语言所选的时候。批评家正确的指出使用高级语言编写的程序天生就比手写的汇编语言来得慢,而且必然如此。而高级语言支持者认为这么点小小的性能损失是值得的,因为COBOL和FORTRAN程序更容易编写和维护。
优点:组织大型程序时比C语言好得多。很好的支持面向对象机制。通用数据结构,如链表和可增长的阵列组成的库减轻了由于处理低层细节的负担。
缺点:非常大而复杂。与C语言一样存在语法滥用问题。比C慢。大多数编译器没有把整个语言正确的实现。
移植性:比C语言好多了,但依然不是很乐观。因为它具有与C语言相同的缺点,大多数可移植性用户界面库都使用C++对象实现。
使用C++编写的游戏:非常非常多。大多数的商业游戏是使用C或C++编写的。
资料:最新版的《The C++ Programming Language》非常好。作为教程,有两个阵营,一个假定你知道C,另外一个假定你不知道。到目前为止,最好的C++教程是《Who's Afraid of C++》,如果你已经熟知C,那么试一下《Teach Yourself C++》。
3、我该学习C++或是该从C开始
我不喜欢这种说法,但它是继“我该使用哪门语言”之后最经常被问及的问题。很不幸,不存在标准答案。你可以自学C并使用它来写程序,从而节省一大堆的时间,不过使用这种方法有两个弊端:
你将错过那些面向对象的知识,因为它可能在你的游戏中使得数据建模更有效率的东西。
最大的商业游戏,包括第一人称射击游戏很多并没有使用C++。但是,这些程序的作者即使使用老的C的格式,他们通常坚持使用面向对象编程技术。如果你只想学C,至少要自学OO(面向对象)编程技术。OO是仿真(游戏)的完美方法,如果你不学习OO,你将不得不“辛苦”的工作。
4、汇编语言
显然,汇编是第一个计算机语言。汇编语言实际上是你计算机处理器实际运行的指令的命令形式表示法。这意味着你将与处理器的底层打交道,比如寄存器和堆栈。如果你要找的是类英语且有相关的自我说明的语言,这不是你想要的。
确切的说,任何你能在其他语言里做到的事情,汇编都能做,只是不那么简单 — 这是当然,就像说你既可以开车到某个地方,也可以走路去,只是难易之分。话虽不错,但是新技术让东西变得更易于使用。
总的来说,汇编语言不会在游戏中单独应用。游戏使用汇编主要是使用它那些能提高性能的零零碎碎的部分。比如说,毁灭战士整体使用C来编写,有几段绘图程序使用汇编。这些程序每秒钟要调用数千次,因此,尽可能的简洁将有助于提高游戏的性能。而从C里调用汇编写的函数是相当简单的,因此同时使用两种语言不成问题。
特别注意:语言的名字叫“汇编”。把汇编语言翻译成真实的机器码的工具叫“汇编程序”。把这门语言叫做“汇编程序”这种用词不当相当普遍,因此,请从这门语言的正确称呼作为起点出发。
优点:最小、最快的语言。汇编高手能编写出比任何其他语言能实现的快得多的程序。你将是利用处理器最新功能的第一人,因为你能直接使用它们。
缺点:难学、语法晦涩、坚持效率,造成大量额外代码 — 不适于心脏虚弱者。
移植性:接近零。因为这门语言是为一种单独的处理器设计的,根本没移植性可言。如果使用了某个特殊处理器的扩展功能,你的代码甚至无法移植到其他同类型的处理器上(比如,AMD的3DNow指令是无法移植到其它奔腾系列的处理器上的)。
使用汇编编写的游戏:我不知道有什么商业游戏是完全用汇编开发的。不过有些游戏使用汇编完成多数对时间要求苛刻的部分。
资料:如果你正在找一门汇编语言的文档,你主要要找芯片的文档。网络上如Intel、AMD、Motorola等有一些关于它们的处理器的资料。对于书籍而言,《Assembly Language: Step-By-Step》是很值得学习的。
5、Pascal语言
Pascal语言是由Nicolas Wirth在七十年代早期设计的,因为他对于FORTRAN和COBOL没有强制训练学生的结构化编程感到很失望,“空心粉式代码”变成了规范,而当时的语言又不反对它。Pascal被设计来强行使用结构化编程。最初的Pascal被严格设计成教学之用,最终,大量的拥护者促使它闯入了商业编程中。当Borland发布IBM PC上的 Turbo Pascal时,Pascal辉煌一时。集成的编辑器,闪电般的编译器加上低廉的价格使之变得不可抵抗,Pascal编程了为MS-DOS编写小程序的首选语言。
然而时日不久,C编译器变得更快,并具有优秀的内置编辑器和调试器。Pascal在1990年Windows开始流行时走到了尽头,Borland放弃了Pascal而把目光转向了为Windows 编写程序的C++。Turbo Pascal很快被人遗忘。
最后,在1996年,Borland发布了它的“Visual Basic杀手”— Delphi。它是一种快速的带华丽用户界面的 Pascal编译器。由于不懈努力,它很快赢得了一大群爱好者。
基本上,Pascal比C简单。虽然语法类似,它缺乏很多C有的简洁操作符。这既是好事又是坏事。虽然很难写出难以理解的“聪明”代码,它同时也使得一些低级操作,如位操作变得困难起来。
优点:易学、平台相关的运行(Delphi)非常好。
缺点:“世界潮流”面向对象的Pascal继承者(Mola、Oberon)尚未成功。语言标准不被编译器开发者认同。专利权。
移植性:很差。语言的功能由于平台的转变而转变,没有移植性工具包来处理平台相关的功能。
使用Pascal编写的游戏:几个。DirectX的Delphi组件使得游戏场所变大了。
资料:查找跟Delphi有关的资料,请访问:Inprise Delphi page。
6、Visual Basic
哈,BASIC。回到八十年代的石器时代,它是程序初学者的第一个语言。最初的BASIC形式,虽然易于学习,却是可怕的无组织化,它义无反顾的使用了GOTO充斥的“空心粉式代码”。当回忆起BASIC的行号和GOSUB命令,没有几个人能止住眼角的泪水。
快速前进到九十年代早期,虽然不是苹果公司所希望的巨人,HyperCard仍然是一个在Windows下无法比拟的吸引人的小型编程环境。Windows下的HyperCard克隆品如ToolBook又慢又笨又昂贵。为了与HyperCard一决高下,微软取得了一个小巧的名为Thunder编程环境的许可权,并把它作为Visual Basci 1.0发布,其用户界面在当时非常具有新意。这门语言虽然还叫做Basic(不再是全部大写),但更加结构化了,行号也被去除。实际上,这门语言与那些内置于TRS-80、Apple II及Atari里的旧的ROM BASIC相比,更像是带Basic风格动词的Pascal。
经过六个版本,Visual Basic变得非常漂亮。用户界面发生了许多变化,但依然保留着“把代码关联到用户界面”的主旨。这使得它在与即时编译结合时变成了一个快速原型的优异环境。
优点:整洁的编辑环境。易学、即时编译导致简单、迅速的原型。大量可用的插件。虽然有第三方的DirectX插件,DirectX 7已准备提供Visual Basic的支持。
缺点:程序很大,而且运行时需要几个巨大的运行时动态连接库。虽然表单型和对话框型的程序很容易完成,要编写好的图形程序却比较难。调用Windows的API程序非常笨拙,因为VB的数据结构没能很好的映射到C中。有OO功能,但却不是完全的面向对象。专利权。
移植性:非常差。因为Visual Basic是微软的产品,你自然就被局限在他们实现它的平台上。也就是说,你能得到的选择是:Windows,Windows或Widnows。当然,有一些工具能将VB程序转变成Java。
使用Visual Basic编写的游戏:一些。有很多使用VB编写的共享游戏,还有一些是商业性的。
资料:微软的VB页面有一些信息。
7、Java
Java是由Sun最初设计用于嵌入程序的可移植性“小C++”。在网页上运行小程序的想法着实吸引了不少人的目光,于是,这门语言迅速崛起。事实证明,Java不仅仅适于在网页上内嵌动画 — 它是一门极好的完全的软件编程的小语言。“虚拟机”机制、垃圾回收以及没有指针等使它很容易实现不易崩溃且不会泄漏资源的可靠程序。
虽然不是C++的正式续篇,Java从C++ 中借用了大量的语法。它丢弃了很多C++的复杂功能,从而形成一门紧凑而易学的语言。不像C++,Java强制面向对象编程,要在Java里写非面向对象的程序就像要在Pascal里写“空心粉式代码”一样困难。
优点:二进制码可移植到其他平台。程序可以在网页中运行。内含的类库非常标准且极其健壮。自动分配合垃圾回收避免程序中资源泄漏。网上数量巨大的代码例程。
缺点:使用一个“虚拟机”来运行可移植的字节码而非本地机器码,程序将比真正编译器慢。有很多技术(例如“即时”编译器)很大的提高了Java的速度,不过速度永远比不过机器码方案。早期的功能,如AWT没经过慎重考虑,虽然被正式废除,但为了保持向后兼容不得不保留。越高级的技术,造成处理低级的机器功能越困难,Sun为这门语言增加新的“受祝福”功能的速度实在太慢。
移植性:最好的,但仍未达到它本应达到的水平。低级代码具有非常高的可移植性,但是,很多UI及新功能在某些平台上不稳定。
使用Java编写的游戏:网页上有大量小的Applet,但仅有一些是商业性的。有几个商业游戏使用Java作为内部脚本语言。
资料:Sun的官方Java页面有一些好的信息。IBM也有一个非常好的Java页面。JavaLobby是一个关于Java新闻的最好去处。
8、创作工具
上面所提及的编程语言涵盖了大多数的商业游戏。但是也有一个例外,这个大游戏由于它的缺席而变得突出。
“神秘岛”。没错,卖得最好的商业游戏不是使用以上任何一门语言编的,虽然有人说“神秘岛”99%是使用 3D建模工具制作的,其根本的编程逻辑是在HyperCard里完成的。
多数创作工具有点像Visual Basic,只是它们工作在更高的层次上。大多数工具使用一些拖拉式的流程图来模拟流程控制。很多内置解释的程序语言,但是这些语言都无法像上面所说的单独的语言那样健壮。
优点:快速原型 — 如果你的游戏符合工具制作的主旨,你或许能使你的游戏跑得比使用其他语言快。在很多情况下,你可以创造一个不需要任何代码的简单游戏。使用插件程序,如Shockware及IconAuthor播放器,你可以在网页上发布很多创作工具生成的程序。
缺点:专利权,至于将增加什么功能,你将受到工具制造者的支配。你必须考虑这些工具是否能满足你游戏的需要,因为有很多事情是那些创作工具无法完成的。某些工具会产生臃肿得可怕的程序。
移植性:因为创作工具是具有专利权的,你的移植性以他们提供的功能息息相关。有些系统,如Director可以在几种平台上创作和运行,有些工具则在某一平台上创作,在多种平台上运行,还有的是仅能在单一平台上创作和运行。
使用创作工具编写的游戏:“神秘岛”和其他一些同类型的探险游戏。所有的Shockwave游戏都在网络上。
资料:Director、HyperCard、SuperCard、IconAuthor、Authorware。
9、易语言
★全中文支持,无需跨越英语门槛。★全可视化编程,支持所见即所得程序界面设计和程序流程编码。★中文语句快速录入。提供多种内嵌专用输入法,彻底解决中文语句输入速度慢的问题。★代码即文档。自动规范强制代码格式转换,任何人编写的任何程序源代码格式均统一。★参数引导技术,方便程序语句参数录入。★无定义类关键字。所有程序定义部分均采用表格填表方式,用户无需记忆此类关键字及其使用格式。★命令格式统一。所有程序语句调用格式完全一致。★语法格式自动检查。自动检查并提示所输入语句的语法格式是否正确,且可自动添加各类名称。★全程提示与帮助。鼠标停留立即显示相关项目提示。编程时提示语法格式,调试时提示变量当前内容,随时按下F1键可得到与当前主题相关详细帮助等。★名称自动管理。用户修改任一名称定义,其它所有包含该名称的程序代码均自动修正。★集成化开发环境。集界面设计、代码编写、调试分析、编译打包等于一体。★学习资源丰富。详细的帮助文件、数十兆的知识库、数万用户的网上论坛、教材已出版发行……
10、结论
你可能希望得到一个关于“我该使用哪种语言”这个问题的更标准的结论。非常不幸,没有一个对所有应用程序都最佳的解决方案。C适于快而小的程序,但不支持面向对象的编程。C++完全支持面向对象,但是非常复杂。Visual Basic与Delphi易学,但不可移植且有专利权。Java有很多简洁的功能,但是慢。创作工具可以以最快的速度产生你的程序,但是仅对某一些类型的程序起作用。最好的方法是决定你要写什么样的游戏,并选择对你的游戏支持最好的语言。“试用三十天”的做法成为工业标准是件好事情。
⑸ c++开发驱动都需要什么知识和软件支持呢,驱动开发用c、c++、java哪一个开发起来更好一些呢
只有c语言才适合底层驱动开发,楼上的说c++适合驱动是误导你的。你可以下载一个linux内核的源码包来看看,里面的代码全部是c语言。严格来说c语言是介于低级和高级语言的中级语言。驱动开发是针对硬件来开发的,比如:网卡驱动,声卡驱动,硬盘驱动,等等。硬件只能识别机器指令,现在能直接操作硬件的只有汇编语言和c语言。汇编语言是机器指令的助记符,理论上说最适合做驱动,但是它的移植性非常差,过于依赖平台,所以在底层用得很少,有一些很核心的技术还是要汇编语言才能做的。c语言可移植性比汇编强很多,和人类的交流方式很像,它又能直接操作硬件,所以精通c语言几乎就可以完成所有的驱动了。c++是c的加强版,也许你认为用c++更好,c++是面向对象的语言,它的函数都是封装好的,对库依赖性很强的。你想想刚出厂的网卡什么代码都没有的,哪里来的库供你调用呀。java更加不用说了,它没有指针的概念,没有指针就不能对地址进行操作,所以java是不能做底层驱动的。有些人说用c++和java做驱动,那指的做应用层,并不是底层的驱动。底层驱动只有c才最合适,但是c在应用层的使用已经被淘汰了。
⑹ C语言是面向对象还是面向过程的
“C语言”面向过程和面向对象的区别是:面向过程是着重于其中程序设计的算法、语言的运用,如设计不同功能的函数。面向对象,按书上说是在C语言的基础上发展起来的,通俗说也就是更高一级的C语言,也就是C++,保留了大部分C语言的功能,而在设计方面却着重于对象的处理,获得更好地性能。
面向过程与面向对象的区别,由“如何把大象装进冰箱”来看:
一、面向过程
为了把大象装进冰箱,需要3个过程。
/* 思路:
1、把冰箱门打开(得到打开门的冰箱)。
2、把大象装进去(打开门后,得到里面装着大象的冰箱)。
3、把冰箱门关上(打开门、装好大象后,获得关好门的冰箱)。
*/
//每个过程有一个阶段性的目标,依次完成这些过程,就能把大象装进冰箱。
//写法一:
1:冰箱开门(冰箱)。
2:冰箱装进(冰箱,大象)。
3:冰箱关门(冰箱) 。
//写法一变体:
1:(冰箱开门 冰箱)。
2:(冰箱装进 冰箱大象)。
3:(冰箱关门 冰箱)。
//写法二:
冰箱关门(冰箱装进(冰箱开门(冰箱),大象))。
//写法二变体:
(冰箱关门 (冰箱装进 (冰箱开门 冰箱) 大象))。
二、面向对象
为了把大象装进冰箱,需要做三个动作(或者叫行为)。每个动作有一个执行者,它就是对象。
/* 思路:
1、冰箱,你给我把门打开。
2、冰箱,你给我把大象装进去(或者说,大象,你给我钻到冰箱里去)。
3、冰箱,你给我把门关上。
*/
//依次完成这些动作,你就可以把大象装进去。
//写法一:
1:冰箱.开门()
2:冰箱.装进(大象)
3:冰箱.关门()
//写法二:
冰箱.开门().装进(大象).关门()
⑺ C语言和C++哪个好学些这两种语言分别用在什么领域
当然是C要好学一些
c是面向过程的
而c++是面向对象的
其实主要是c++的有些概念比较难理解一些
至于运用领域两者都是编程工具
现在用c做软件比较常见
虽然c++也做
但只是大型软件
此外C
机电信号控制方面用的比较广泛...
⑻ C语言和C++语言有什么区别
在Java程序中的每个变量无论是基本数据类型(布尔型,字符型,字节,short,int和长,浮点型,双精度),或对象
C + +基本类型有许多种,额外的结构,联合,枚举,数组和指针,C + +指针可以指向一个对象,不能指向的对象
Java中没有枚举,联合类型,因为Java认为没有必要。删除的语言元素缺一不可的Java,C / C + +做一个大的变化,因此,一般认为Java比C + +更轻便,更精简
Java的Unicode字符集,C + +通常使用的ASCII字符集。 ASCII是Unicode的子集,程序员习惯于ASCII的感觉之间的差异小于
Java布尔类型不能转换成其它类型,反之亦然。 C + +最近推出的bool类型的,代表的布尔型,整型作为一个逻辑判断
模板是“通用??的编程思想,从”面向对象的编程思想是不同的。 C + +已经在很大程度上支持这种新的编程方法,尤其是STL出现
在Java还支持泛型编程,而是说,Sun公司计划推出的Java模板
C + +支持操作符重载,这是一个非常重要的多的特点,数据抽象和通用的编程工具。它允许四则运算的对象,只是作为基本的数据类型
Java不支持这种多态性,以减少复杂性
两种语言?支持方法重载(超载)
在C + +,动态地确定哪个函数被调用时,函数必须,以允许运行的虚拟。 virtual关键字自动继承来支持多态
那些不被虚拟成员函??数(包括静态)静态绑定在编译时决定哪一个版本被称为
Java中,除了静态的,最终的,私人的,静态绑定,动态绑定过程的所有方法都
C + +拷贝构造函数“的概念,在三种情况下,自动呼叫
对象初始化一个对象到另一个对象作为参数的函数调用的
对象函数的返回值
通常情况下,当一个对象需要做“深拷贝”(钱可:“C + +程序设计教程),我们需要事先定义的“拷贝构造函数”和“赋值运算符重载函数”和“析构函数”,否则编译该装置会自动生成默认的功能“位拷贝”的形式。如果类包含一个指针成员或引用成员,三个默认的功能隐含的错误
Java不是语法结构和语义逻辑
C + +支持内联函数,你能避免的堆栈的函数调用,提高了作业效率
Java调用语义
?+ +构造函数初始化列表中是这样用的:首先,根据继承的顺序基类构造函数的基类对象的构造函数,然后按语句顺序调用成员对象的构造函数构造函数的成员对象
Java的初始化没有初始化列表这种结构的最后一个成员变量会出现在名单上施工顺序的机制
他们基本上是相同的:
静态变量调用基类的构造函数构造函数的基类对象初始化
静态初始化块(Java)的 />实例变量初始化
构造函数的其余
Java中使用abstract关键字修饰抽象方法或抽象类
C + +语法是“纯虚函数”,“抽象类“
同时使用一个抽象类作为一个基类继承层次结构中,提供笼统的概念,实现由不直接实例化的对象
Java的抽象方法和抽象类的子类, final关键字在后的类,方法或者变量
最后一类不能被继承
最后的方法不能被子类重写的
最后一个变量是一个常数
C + +中的关键字,常数可以使用const定义或#define
const成员函数也可以被,即“普通成员函数”,当一个const成员函数来会员资料,或调用一个非const成员函数,编译器会抱怨
我们不应该成员数据函数声明为const
static关键字在Java和C + +的语法和语义基本相同
静态成员变量称为类变量,像所有对象共享
A :: X(C + +):必须在类体外初始化
AX(Java代码):必须在类体内初始化 BR />静态成员方法也被称为类的方法来访问静态变量
A :: F()(C + +)
AF()(爪哇)
都有内部类和局部类的语法和没有友元函数和友元类的概??念,严格的语义
Java支持包的外部方法是不允许的类
C + +支持的朋友关键字允许外部访问的私有成员方法访问类的私有成员,它不是一个纯粹的面向对象编程语言
Java类或接口,可用于对公众的,它可能不会被,而C + +类不能被
3个同种的访问的语义语法轻微的差异
C + +也继承权限修饰符,Java是不是
A类:保护B,公共C( C + +)
A类扩展B(JAVA)
Java的super关键字是指对父对象,通常用来调用父类的构造方法或方法
C + +是不是super关键字
既此,请参阅对象
Java包的概念,类的组织,易于封装和部署,但也有利于安全之类的。 C + +没有一类的概念可以被任何类访问
可以在HTML文档中嵌入Java小应用程序,然后通过Web浏览器下载和执行
Java API,用于网络通信的特殊支持
C + +没有内置的网络功能
C + +程序员必须显式动态内存管理使用delete运算符休息或free()函数,析构函数释放对象和动态分配的数据空间,否则会造成“内存泄漏”
在Java中,垃圾收集是自动的。当最后一个对象引用变量被释放时,对象就成为垃圾收集候选人
Java不支持析构函数
的finalize()方法是用来释放一个先前打开的非内存资源,如文件句柄 /> Java源代码被编译成字节码(class文件),字节的二进制代码是JVM只能识别低级别的代码,它没有任何与特定的处理器,安装操作系统的JVM上解释转换成相应的平台的本机代码,Java是体系结构中立的和
跨平台的C + +直接编译成二进制机器代码的基础平台,由CPU执行平台
因此,解释执行时,Java程序的速度较慢
Java语言支持多线程,同步和互斥的操作允许并发线程
C + +,这种内在机制
的Javadoc 。exe文件的内容和结构的Java程序文件转换成HTML格式
⑼ 关于C语言更深入的学习(比如底层、驱动...)
我现在的工作就是用C语言做底层开发的!用的单片机,MIPS核的。
你可以自己买一块ARM的开发板学习,mini2440应该适合你,500多块。
那就是嵌入式linux,很有前途,我相信你能学好的,你现在学的比我系统多了,以前我只学了点C和单片机。
学习linux就是最后的深入了,然后再在ARM开发板上实践,这块板网上很多卖的,去年这个时候我在淘宝网上买过一块的。
⑽ 如何用C语言实现面向对象
可以通过以下方法实现面向对象:
1、封装
封装就是把数据和方法打包到一个类里面。其实C语言编程者应该都已经接触过了,C 标准库 中的 fopen(), fclose(), fread(), fwrite()等函数的操作对象就是 FILE。
数据内容就是 FILE,数据的读写操作就是 fread()、fwrite(),fopen() 类比于构造函数,fclose() 就是析构函数。
2、继承
继承就是基于现有的一个类去定义一个新类,这样有助于重用代码,更好的组织代码。在 C 语言里面,去实现单继承也非常简单,只要把基类放到继承类的第一个数据成员的位置就行了。
例如,我们现在要创建一个 Rectangle 类,我们只要继承 Shape 类已经存在的属性和操作,再添加不同于 Shape 的属性和操作到 Rectangle 中。
3、多态 C++
语言实现多态就是使用虚函数。在 C 语言里面,也可以实现多态。 现在,我们又要增加一个圆形,并且在 Shape 要扩展功能,我们要增加 area() 和 draw() 函数。
但是 Shape 相当于抽象类,不知道怎么去计算自己的面积,更不知道怎么去画出来自己。而且,矩形和圆形的面积计算方式和几何图像也是不一样的。
4、虚表和虚指针
虚表(Virtual Table)是这个类所有虚函数的函数指针的集合。
虚指针(Virtual Pointer)是一个指向虚表的指针。这个虚指针必须存在于每个对象实例中,会被所有子类继承。
5、在构造函数中设置vptr
在每一个对象实例中,vptr 必须被初始化指向其 vtbl。最好的初始化位置就是在类的构造函数中。
事实上,在构造函数中,C++ 编译器隐式的创建了一个初始化的vptr。在 C 语言里面, 我们必须显示的初始化vptr。下面就展示一下,在 Shape 的构造函数里面,如何去初始化这个 vptr。