关于c语言的论文与c++

百度题库旨在为考生提供高效的智能备考服务,全面覆盖中小学财会类、建筑工程、职业资格、医卫类、计算机类等领域。拥有优质丰富的学习资料和备考全阶段的高效服务,助您不断前行!
京ICP证号&&
京网文[3号&&
Copyright (C) 2018 Baidu百度题库旨在为考生提供高效的智能备考服务,全面覆盖中小学财会类、建筑工程、职业资格、医卫类、计算机类等领域。拥有优质丰富的学习资料和备考全阶段的高效服务,助您不断前行!
京ICP证号&&
京网文[3号&&
Copyright (C) 2018 Baidu21:09 提问
关于c语言和C++语言,请高手指导
关于C语言和C++语言的比较,自己没有太多的编程经验,有一个问题一直困扰我,
1.为什么C语言和C++优势分别在哪,感觉C++抽象能力确实比C语言强大,但为什么
大多数操作系统都是用C语言写的,不是说C语言不适合编写大型程序吗?操作系统难道
还不算大型程序吗?(难道是为了效率,或者说C语言不适合编写需求不稳定的大型程序
,而操作系统只要提前做好规划,用C语言还是可以的?)
2.linux下C语言编程用的比较多,但是C语言经常用到全局函数,而C++的类一般都是对
本类的数据进行处理(而非全局函数),如何处理这个矛盾?linux下如何对底层API
进行封装?
3.在linux下有没有对底层API函数进行封装的类库(类似于windows下的MFC)?
问题有些多,请大家指导。
按赞数排序
C语言不适合编写大型程序
操作系统(内核)还真的算不上大型程序。操作系统和其它软件不同,它的需求是基本恒定的,在有限的需求内需要绝对的可靠性和绝对的性能。
C++中优雅地使用全局数据的方式是使用单例模式(singleton pattern)
类似windows的mfc,在linux下进行gui编程,我们有qt gtk等等,和windows不同,linux的kernel和shell是分开的,我们有不止一种的gui。
linux 下是有封装API函数的库的。只不过当前最主流的桌面应用操作系统是Windows而不是Linux, 所以如果非Linux开发人员是很少用的
1。对,也不对,关键看对“操作系统”怎么理解,Windows内核和Linux内核都是用主要C并混编汇编。c是非常贴近于硬件的程序语言,用于写系统内核非常适合,当然这里面更多是考虑到工作效率。但系统的用户层程序确不是C,以Windows为例,应用层是一个叫做nt native的环境,在nt native上面,就是我们看到的五彩缤纷的各种各样Windows应用程序,这些软件是Windows必须的,但他们大部分是用C++写的,少部分是C#。有很多人认为,操作系统自带的程序不是操作系统的一部分,操作系统=内核,那么如果这么理解,自然就是C了
2。以GNU/Linux为例(即排除Android、ChromeOS之类的Linux系统)操作系统内核的接口由C库封装,这个C库就是大名鼎鼎的Glibc!
3。Windows的底层API不是MFC封装的,可能是为了更贴近于微内核的原理,Windows的API调用非常复杂,从底层到应用大致分为:硬件抽象层(HAL)-设备驱动程序-I/O管理器等-内核服务例程及接口-NT Native API-win32子系统、unix子系统、OS/2子系统、……-win32子系统上-MFC、.NET、WinRT(Windows运行时)-APPX、UWP
因为内核大部分还是c和汇编实现的。所以c来操作这些比较有优势。而c++在更抽象的上层。更适合系统级开发。
C语言自由度极高,这是它的优点,也是最大的危险所在。
C就像你需要自己用各种零件拼出一个赛车,C++像直接买来引擎、车架拼出一个赛车。
所以如果一个公司要生产车的话,一般还是从头开始的。
内核基本上还是C和汇编,高效~C相对与其它语言C++,Java,C#等来说算是低级语言,但是相对于汇编这种低级语言来说又是高级的。
汇编-& c -& 高级语言(C++)
C语言、C++都是高级语言,用来开发大型软件都没有问题的。
C语言是面向过程的语言,C++是面向对象的语言。
如果要开发嵌入式软件,C语言更好,写出的程序短小、精悍,执行效率高。如果要开发PC软件,用C++语言更好,底层操作、应用界面都很容易实现。
C在经过编译之后执行效率更高,因此和硬件契合度也就更好,像楼上所说,对效率要求高的代码很多都是C和汇编混写的。
C++是面向对象的,它的抽象是基本;C是过程的语言,指针是它的最大的优势、但同时也是它被“攻击”的主要点。作为“底层”语言,它的效率是它的优势。
C++也可以用来实现系统,只是历史的原因,大部分操作系统的底层是C语言。
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐C语言与C++语言的结合点
C语言与C++语言的结合点
都说C++继承、并发展的C语言,那么它都多了些什么?你会说最大的亮点就是增加了类与继承的,对,但是这只是C++由于C语言的一个要点,或者说一个基础点。
有为C++创始人说过,C++的关键在于他的标准库,如果没有标准库的存在,C++其实也没比C多什么东西。所以他说“C++就是标准库,标准库就是C++
理解上面那句话需要一个很长的思考和实践过程。
C语言是一种贴近硬件、较为低级的高级语言,向指针、数组、C-style
字符串,都是C语言自身提供的一种类型,他们高效因为直属语言级别、基本上机制面向硬件操作,但这同样也是C语言的缺陷,这样的东西,让有C写出来的代码,需要程序员相当的仔细和考虑周全,要不然,越界访问等可以使系统崩溃的运行时错误会很多很多。
C++没有丢掉C语言这方面的东西,而是基本上照搬过来了,一方面是为了,让C++能够兼容以前C语言编写的程序,另一方面,的确是因为它的高效性,以及很多机制还是需要那些东西来完成。
所以在C++中,专家会建议你尽量使用由标准库提供的一系列的用来代替C中遗留下来的不安全机制,例如:容器代替数组,迭代器代替指针,string代替C-style等等,这些东西以库类的形式出现,就像是做了一个安全封装,你可以理解成,这些库类都还是使用C原来的那些不安全的机制实现的,然后通过加入一些安全判断,是使用起来变得安全,例如:指针这样的东西实在太容易越界了,使用迭代器就有点不可能。其实这些试图代替C中不安全机制的库类的实现,就类似于C中要求你周全考虑那些不安全的机制,只是,库类中这种考虑已经作好了,你只要使用就是,而不比太在乎那些安全问题。
当然,使用原始的库类很多地方无法代替C语言中那些低级的、高效的机制,所以两类机制共存是一个很好的态势。
C-Style ——————〉string类型
数组————————〉Vector类型
指针————————〉Iterator类型。
那么有时候,你需要在这两类机制之间作转换,你如何做到呢?
标准库中提供的机制是以外界类的形式出现的,而C/C++语言内建的机制是语言本身的东西,你不能要求语言来适应外界类,只能说让外界类来适应语言本身的机制。
对于string类型与C-style字符串。
string&& s= ”How are you”
s=“xu”;
就是一个很好的结合点。
或许你觉得上面的语句没有什么!但是你要知道“How are
you”这个常态C-style字符串,如何能够直接给字符串类型变量复制呢?类型的初始化或复制操作符,都是由定义类型的时候规定的,所以,只要在定义string字符串类型的时候写上这种格式就可以了。
常态C-style字符串只是一个代表,因为我们很难避免,这种类型的使用,所以以这个为例子,但是变量C-style是一样的,只要常态C-style字符串能用到的地方,普通的C-style也是一样的。在从原理上讲,其实所有的字符数组都能这么用,只是,它假设有一个\0作合理结束,所以:
char&& d[]={‘a’,’b’};
s这是就很可能不只ab了,还应该后面有其他的字符,直到出现\0。
那么如何能使用string变量给C-style赋值呢?这时候的C-style自然不是常态的,而只是一个字符数组。可知,直接赋值是不可能的,因为没有什么办法能够改变C/C++语言本本身的接受能力,但是,string类型,提供了一种方法,该方法可以将该string变量转换成一个C-style字符串。
s=”xuyongquan”;//s已经变成了string类型变量,虽然是使用C-style字符串初始化的。
Const char&
*c=s.c_str();//s.c_str()的作用就是将s这个string类型变量转化成一个C-style字符。注意啊,他们的存储方式都是不同的,所以,可能是另外开辟了一个空间来存储这个C-style字符,我们知道就是字符数组。然后将这个数组的首地址传递给c。注意阿,这种转换虽然是开辟了另外一个空间来保存这个C-style字符串,但是它返回的首地址const
*类型的,也就是说你不能对该字符串的内容进行修改,为什么呢?主要是因为,系统不想形成一些误会,而强制将两者同步起来,所以那个const不能省略,就会报编译错误。修改只能从string那里进行,并且修改之后,C-style这里也会同步修改。也就是说,系统让你感觉到s.c_str(),函数并没有重新申请空间,只是将s这个类型变量中的一个存数据的地址放回给它,当然返回的是只读地址。这样也是合理的。因为string类型很可能只是对C-style作了一个安全封装。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。当前位置浏览文章
C语言是面向过程的,而C++是面向对象的C和C++的区别:C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或者环境条件)进行运算解决得到输出(或者实现过程(事务)控制)。C++,首要考虑的是如何构造一个对象模型,让这个模型可以够契合与之对应的问题域,这样即可以通过获取对象的状态信息得到输出或者实现过程(事务)控制。 所以C与C++的最大区别在于它们的使用于处理问题的思想方法不一样。之所以说C++比C更先进,是由于“ 设计这个概念已经被融入到C++之中 ”。C与C++的最大区别:在于它们的使用于处理问题的思想方法不一样。之所以说C++比C更先进,是由于“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计假如没有好的算法,一样不行。而且,“C加上好的设计”也可以写出非常好的东西。C语言基础一 C语言程序的基本语法结构:1、主函数main()main()函数的常见结构如下所示。voidmain(){… /函数体/}2、 假如需要在程序执行时接受命令行参数,则main()函数的格式如下。voidmain(intargc,char
argv[] ){…}小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都能来理解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!二、单行语句与复合语句1、单行语句C语言程序中单行语句的最后都是分号(;),这是C语言程序的语句结束符号,所有的C语言语句都必需以分号结束。需要注意,C语言中的单行语句并不是说该语句只占一行,而是指以分号结束的语句。如:printf("This is c");//这是一条输出语句,以;结束。2、复合语句在程序中,有时需要将相邻的数条语句作为一个整体来执行,即可以将这些语句使用花括号括起来,成为一个复合语句,也称为语句块。如:for(int a=0;a...................}3、注释C语言的注释符是以“/”开头并以“/”结尾的串。在“/”和“/”之间的即为注释。程序编译时,将忽略注释,不对注释作任何解决。注释可出现在程序中的任何位置,使用来向使用户提醒或者解释程序的意义。三、C语言程序的结构特点一个C语言源程序能由一个或者多个程序源文件组成,每个源文件可包含一个或者多个函数。一个源程序不管由多少个文件组成,都有一个且只可以有一个main函数,即主函数。源程序中能有预解决命令(include命令仅为其中的一种),预解决命令通常应放在源文件或者源程序的最前面。每一个说明,每一个语句都必需以分号结尾。但预解决命令,函数头和花括号“}”之后不可以加分号标识符、关键字之间必需至少加一个空格以示间隔。若已有显著的间隔符,也可不再加空格来间隔。小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都能来理解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!四、 标识符与关键字1、标识符在C语言程序中,标识符由1~8个字符组成。构成标识符的字符只可以是下划线“_”、数字(0~9)和英文字母,并且标识符的第一个字符只可以是下划线或者英文字母。C语言是一种对字母大小写敏感的语言,定义标识符时必需注意字母的大小写。在用标识符时还必需注意以下几点。标准C语言不限制标识符的长度,但它受各种版本的C语言编译系统限制,同时也受到具体机器的限制。例如在某版本C语言中规定标识符前八位有效,当两个标识符 前八位相同时,则被认为是同一个标识符。在标识符中,大小写是有区别的。例如BOOK和book 是两个不同的标识符。标识符尽管可由程序员随便定义,但标识符是使用于标识某个量的符号。因而,命名应尽量有相应的意义,以便阅读了解,作到“顾名思义”。2、关键字在C语言程序中,还有一类特殊的标识符,它们仅供系统专使用,不可以使用来作为使用户定义的标识符,这就是关键字。关键字是有特殊含义的系统保留标识符,因而又称为系 统保留字。关键字是由C语言规定的具备特定意义的字符串,使用户定义的标识符不应与关键字相同。C语言的关键字分为以下几类。(1)类型说明符。使用于定义、说明变量、函数或者其余数据结构的类型。如前面例题中使用到的int,double等。(2)语句定义符。使用于表示一个语句的功可以。如例1.3中使用到的ifelse就是条件语句的语句定义符。(3)预解决命令字。使用于表示一个预解决命令。如前面各例中使用到的include.文末奉上经典游戏(扫雷)小编推荐一个学C语言/C++的学习裙【 六九九,四七零,五九六 】,无论你是大牛还是小白,是想转行还是想入行都能来理解一起进步一起学习!裙内有开发工具,很多干货和技术资料分享!struct Mine{int x,y; // 格子的位置坐标 // 0表示不是地雷,1表示是地雷 // 附近的地雷数 // 操作号;0表示无操作,1表示鼠标左键按下(显示数字或者雷),2表示有键按下(显示旗子标志)}这些是C/C++可以做的服务器开发工程师、人工智可以、云计算工程师、信息安全(黑客反黑客)、大数据 、数据平台、嵌入式工程师、流媒体服务器、数据控解、图像解决、音频视频开发工程师、游戏服务器、分布式系统、游戏辅助等

我要回帖

更多关于 关于c语言的论文 的文章

 

随机推荐