关于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)?
问题有些多,请大家指导。

0

11个回答

C语言不适合编写大型程序
操作系统(内核)还真的算不上大型程序。操作系统和其它软件不同,它的需求是基本恒定的,在有限的需求内需要绝对的可靠性和绝对的性能。

C++中优雅地使用全局数据的方式是使用单例模式(singleton pattern)

类似windows的mfc,在linux下进行gui编程,我们有qt gtk等等,和windows不同,linux的kernel和shell是分开的,我们有不止一种的gui。

-3
caozhy
贵阳挖掘机马善福,自备车辆专业挖游泳池 回复朱君鹏: http://blog.csdn.net/kooder/article/details/4091094可以看出linux最初版本的内核(kernel)只有几千行代码,即便到了现在,也没有超过100万行代码。这种规模的程序,当然不能称之为大型软件。
2 年多之前 回复
jpzhu16
朱君鹏 简直瞎扯淡
2 年多之前 回复

C++是面向对象的,它的抽象是基本;C是过程的语言,指针是它的最大的优势、但同时也是它被“攻击”的主要点。作为“底层”语言,它的效率是它的优势。
C++也可以用来实现系统,只是历史的原因,大部分操作系统的底层是C语言。

1

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

1
zuishikonghuan
zuishikonghuan 所以,Windows上的底层接口封装应该是NT Native层,再怎么算也应该是Win32子系统,还轮不到MFC。如果楼主说的是界面库,Linux的图形界面是一个叫X window的软件实现的,常用X window有两种,一个叫Xorg,一个是XFree86,最底层的界面接口是X协议,在X协议之上封装了一个叫Xlib的库,他非常底层,所以很少有程序去用,在Xlib的基础上出现了GTK+和QT,这才是Linux GUI开发的首选
3 年多之前 回复

因为内核大部分还是c和汇编实现的。所以c来操作这些比较有优势。而c++在更抽象的上层。更适合系统级开发。

0

C语言自由度极高,这是它的优点,也是最大的危险所在。
C就像你需要自己用各种零件拼出一个赛车,C++像直接买来引擎、车架拼出一个赛车。

所以如果一个公司要生产车的话,一般还是从头开始的。

0

不不不,C语言可以实现很多C++的功能,只是你现在是菜鸟,技术上不能想象,你像数据库管理系统很多的都是用C写的啊,并不是不适合大型的软件,操作系统是大型软件啊,你是一般的大,不是一般的难,刚学语言,不要去看语言是否好坏,是否适合做这些做那些,等你学到出神入化了什么都能的,还有的大神用SQL写皇后问题呢,按照普通人的观点这简直是不可能啊,淡定的学兄弟,别管前路有啥,只管向前走吧。

0

内核基本上还是C和汇编,高效~C相对与其它语言C++,Java,C#等来说算是低级语言,但是相对于汇编这种低级语言来说又是高级的。

0

linux 下是有封装API函数的库的。只不过当前最主流的桌面应用操作系统是Windows而不是Linux, 所以如果非Linux开发人员是很少用的

0

汇编-> c -> 高级语言(C++)

0

C语言、C++都是高级语言,用来开发大型软件都没有问题的。

C语言是面向过程的语言,C++是面向对象的语言。

如果要开发嵌入式软件,C语言更好,写出的程序短小、精悍,执行效率高。如果要开发PC软件,用C++语言更好,底层操作、应用界面都很容易实现。

0
共11条数据 1 尾页
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
初识c++(c++与c语言的区别)
c语言是面向面向过程的程序设计:数据结构+算法,c语言的目的是高效。rnc++是面向对象的程序设计:由现实世界建立软件模型。rnc++比c加强的点:rn1.引入命名空间rn一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,不可避免地会出现变量或函数的命名冲突。当所有人的代码都测试通过,没有问题时,将它们结合到一起就有可能会出现命名冲突。为了解决合作开发时的命名冲突问题,C++ 引入了
C语言内存讲解
C语言内存与指针的综合使用,配合C语言进行综合讲解指针内存
C语言与c++一部分的共同点
其实c++作为C语言的延伸,c++与C语言有很多相似的地方,例如有相同的基本数据类型,还有相同的常量,还有一些运算符是相同的。总之c++是在C语言基础上创造出的更深沉次的语言,他们之间有很多的共同点。...
C语言和汇编语言的区别
C语言和汇编语言的区别
C++与C语言的区别
C++语言对C语言的扩充n(1)数据的输入输出n(2)变量的初始化及常量n(3)引用及函数间参数的引用传递n(4)几种特殊形式的函数n(5)命名空间n(6)动态内存分配nnn(1)数据的输入输出n          c语言的输入与输出n          ——输入/输出函数,例如scanf,printf等n          ——头文件:#include
C语言和C++的区别
1、关键字 n蓝色标注为C语言关键字,C++继承了C语言的所有关键字,以下红色标注为C++中含有但C语言没有的关键字(根据c++98中提出C++包含63个关键字) n n2、源文件区别 nC语言文件后缀为.c,c++原文件名后缀为.cpp n如果在创建源文件时什么都不给,默认是.cpp n3.返回值不同 nC语言中,如果一个函数没有指定返回值类型,默认为int类型,并返回一个随机数,一般为0XCC...
go语言和C语言的对比
下面的go语言和C语言的对比, 看过就知道go语言是多么简洁!nhttp://hyperpolyglot.org/c
java和c语言哪个用途大?如果学Java最快要多久?
推荐一个学习资料群;java《学习》+交流 523401738 点击链接加入群聊【java《学习》+交流】:https://jq.qq.com/?_wv=1027&k=5GWe55B 来到Java面授学习已经三周了,我从一个对电脑都不了解的小白,到现在初步了解编程的知识。从最初的notepad++的使用,到基本的代码认识,再到规范自己的代码格式以及eclipse的使用,我真的收获了很多。同...
C语言和C++的区别与联系(详细)
面向过程和面向对象语言的区别 n文件区别:关键字、后缀、返回值、参数列表 n重载 nC/C++函数调用约定与函数名称修饰规则nn在学习了C语言和C++之后,这两者之间的区别我们需要仔细的捋一捋!nnnn一、面向过程语言和面向对象语言nn我们都知道C语言是面向过程语言,而C++是面向对象语言,说C和C++的区别,也就是在比较面向过程和面向对象的区别。nnnn1.面向过程和面向对象的区别nn(1)面向...
go语言和c语言的区别
我们基本上都学过c语言 那么为什么和c语言相似的go语言这几年火起来了那n我们可以看看c和go之间的区别 看完你就会发现go语言为什么这么火 他是有多么的简介~~~n区别:http://hyperpolyglot.org/cnn...
C语言与javascript的不同之处
C语言与javascript的不同之处nnnn介绍nn最近会把一些C语言的小程序,小算法移植到js中,这里简单记录一下两种语言的不同之处。nnnn数据类型nnC语言中有int,char,float等等,而js中只有let(先忽略var),所以转换过程中遇到C语言中的数据类型要换成let。nnnn除法nnC语言中常用一种除法整除取整比如int a = 5/2;结果就是2。而在js中这样计算默认会变成...
c51和一般c语言的不同之处
c语言和c51大部分的地方都是相同的,他们的语句,结构,顺序都是很相似的,只是c51相比与c语言,多了很多变量类型和其他的东西,下面是总结c语言和c51的一些不同之处。rn  变量类型rn  位变量声明 bit c51中特有的一种变量声明,bit变量位域只有0和1,长度也只有1rn  存储类型rn  很多不管学过还是没学过c语言对于这个词都会有一些陌生,其实我们在学习c语言的时候接触过这个东西,在
为什么说C语言和linux是分不开的?
在很多人的眼里,C语言和linux常常是分不开的。这其中的原因很多,其中最重要的一部分是linux本身就是C语言的杰出作品。当然,linux操作系统本身对C语言的支持也是相当到位的。作为一个真正的程序员来说,如果没有在linux下面用C语言编写过完整的程序,那么只能说他对C语言本身的理解还相关肤浅,对系统本身的认识也不够到位。作为程序员来说,linux系统为我们提供了很多理想的环境,这其中包括了下...
go语言贪食蛇与C语言的区别
利用go语言写贪食蛇游戏那么就会利用面向对象的思想来写一下,创造蛇身体对象,然后写出来,/go语言写的时候我们需要调用一个c语言写的一个包/,go语言可以直接调用调用c语言的函数,很方便简洁,我们先来看一下我自己写的C语言的一个包nnnnpackage Clibnn/*n#include <windows.h>n#include <conio.h>nn//
Matlab 与c语言的区别
这个word文档讲述了Matlab与C语言的区别,很详细的
01-Go语言与C语言的异同
Go语言程序组成nn和C语言一样,Goa语言也是由众多函数组成n和C语言一样,程序运行会自动调用叫做main的函数nn和C语言程序一样,如果一个程序没有主函数,则这个程序不具备运行能力n和C语言程序一样,一个Go语言程序有且只能有一个主函数nnnnGo语言主函数格式nnGo语言main函数格式nnfunc 告诉系统这是一个函数nmain 主函数固定名称n函...
C语言和Java的区别和相同点
0:标识符:java 中可以有美元符号,c不可以rn1:true 和false 不是c语言的关键字rn2: c语言的类型列表:rn0:基本类型(6种):数值类型(整形(short,int,long(没有byte)),浮点型(float,double)),字符型 char,(没有boolean型)rnc语言允许用数值来标识逻辑值,用0标识false,用非0标识true;Java中是不允许的,java
C语言和C++头文件的区别、作用
导入C++头文件和C头文件的区别C++头文件没有.h后缀,从中导入的名称位于作用域std中,当中包含的名称使用std::来访问。 nC头文件带有.h后缀,从中导入的名称位于全局作用域global中,当中包含的名称可以直接使用。
单片机c语言和汇编语言混合编程实例详解实例打包(不止是PDF)
本书总共12章例程,配合本书效果更加。图书请购买正版。 目录: 单片机C语言和汇编语言混合编程实例详解 目录 第1章绪论 1.1 Keil C51和A51接口所涉及的几个主要问题2 1.1.1 C51函数名的转换及其命名规则 2 1.1.2 C51函数及其相关段的命名规则 2 1.1.3 C51函数的参数传递规则3 1.2 在C51中调用汇编程序应用举例4 1.3 在C51中调用汇编程序的一般过程 7 第2章 带有串行EEPROM的CPU监控器X5045 2.1 X25045/5045简介12 2.2 X25045/5045或X25043/5043 与单片机的连接13 2.3 读/写X5045汇编语言程序15 2.4 被调汇编语言程序18 2.5 C51语言程序22 第3章 时钟芯片DS1302 3.1 DS1302涓流充电时钟保持芯片简介25 3.2 DS1302与单片机的连接28 3.3 汇编语言程序28 3.4 被调汇编语言程序35 3.5 C51语言程序40 第4章 2路8位串行模/数转换器TLC0832 4.1 TLC0832 8位串行控制模/数转换器简介43 4.2 TLC0832与单片机的连接44 4.3 汇编语言程序45 4.4
Go语言学习笔记----与C语言的比较学习
最近学习了golang(go语言),其中大部分是和C相似的,记录一下不同的地方,需要注意1.go的左花括号“{”不能单独放在一行 n出错代码:package mainnimport "fmt"nfunc main() n{ //error, can't have the opening brace on a separate linen fmt.Println("hello there!")
C语言与汇编语言混合编程
C语言与汇编语言混合编程n1、在C / C++程序中使用内嵌的汇编指令n在ARM C语言程序中,使用关键字__asm来标识一段汇编指令程序。n程序格式如下所示:n__asm ;注意是两个下划线!n{n 汇编语言程序n ~~~~~~~~~~n 汇编语言程序n}其中一条指令占据多行的时候,要使用续行符号( \ )。必须小心使用物理寄存器,如R0 ~ R3、SP、LR和CPSR
C语言与C++的基本区别
C语言的优点:rn1、  出色的移植行 2、访问硬件 3、运行效率高rn注:所有的操作系统的内核都是用C语言实现的rnC语言的缺点:rn1、  扩展性差2、复用性差3、维护性差rn面向对象:C++的优点:rn1、  扩展性好2、复用性好3、维护性好rnC语言+面向对象方法论:1、objective c2、c++rnC++支持的编程规范:过程式、数据抽象、基于对象、面向对象式、函数式、泛型形式、模板
C学习笔记(一) C语言和汇编语言的区别
C学习笔记(一) C语言和汇编语言的区别n nC语言和汇编语言的区别:n汇编:效率高,对硬件的可操控性更强,体积小,不易维护,可移植性很差 nC:效率比较低,硬件可操控性比较差,目标代码体积大,容易维护,可移植性很好n n n汇编语言运行效率高的原因:(转载)n1.  汇编语言实质上是机器语言的助记符。 CPU只能运行它所支持的指令集,而这些指令集当中的每条指令都是一些二进制
C语言和R语言变量命名规则的比较
C语言rnrn以字母、数字、下划线(‘_’)组成rn必须以字母或下划线开头;rn变量名区分大小写;rn避免使用已被系统使用的变量名;rnrnR语言rnrn变量名可以由字母、数字、下划线和点号(‘.’)组成rn不能以数字、下划线为开头rn避免以点号开头的变量名rn变量名区分大小写rn避免已被系统使用的变量名rnrnrn...
C语言和java的不同
从初学者的角度看,两种语言都是通过一定的方式让人与机器沟通,但一定是有所不同的,就像是人类世界中的一样。这两种语言甚至在某方面甚至是相反的,比如++i和i++,rn两者在运算的过程中步骤与结果都不同,数组的使用定义数组a【】,在从语言里可以直接按地址开端输出整个数组,在java里还要用遍历的方式,从头输出,一开始接受两种机器语言有点困难,还是不同的体系,但这种情况我认为会越来越好。
C语言中const和C++中const关键字的区别
 nn# include "iostream"nnusing namespace std;nnstruct Teachern{n    char name[30];n    int age;n};nnvoid operatorTeacher(Teacher *pT)n{n    cout << pT->age<<endl;nn}nnvoid operatorTeach...
java语言和C语言的区别
简单的说就是两种不同的语言.但是它们之间既有联系又有区别
C语言和C+的这些区别你知道吗?
n n n nnnnnn1.带有默认值的函数在C语言里面没有带默认值的函数,C++支持带默认值的函数。在给形参默认值的时候,要按照从右向左的顺序。可以在定义处给,也可以在声明处给。但是同一个变量的默认值只能给一次,给多次相同的默认值也不行。调用的时候可以只传入没有默认值的实参,有默认值的可以不用传递。如果传了实参,函数调用时,在汇编上先压实参,按从右向左的顺序;如果没...
C语言与C++的比较
一、C++对C语言的扩展nn1. 类型增强nn(1)类型检查更严格,如无法将const类型的指针赋值给非const类型的指针;nn(2)C++中有表示逻辑真假的布尔类型bool,可取值为true和false;nn(3)真正的枚举,C++中的枚举变量只能用被枚举出来的元素初始化,C语言中枚举的本质是整型,枚举变量可以用任意整型赋值;nn(4)表达式的值可以被赋值,如 (a=b)=10;;nn2. 输...
Python与C语言的异同
Python与C语言的异同n笔者的984.5的大学大一就直接教了C语言,而笔者自学了一段某黑马的python,在此总结以下python 与 c 的异同,笔者才疏学浅,若有错误,还望斧正。n一.相似点n1.print,格式化输出符相似n以下是python的代码:nname = "小明"nprint("我的名字叫%s,请多多关照"% name)nn以下是C的代码:n#include&l
c语言和汇编语言的区别
什么是c语言:rnrnrn    rnC语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言;尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。rn
面试知识点总结——C语言和C++语言区别和联系
C语言和C++语言区别和联系nnC语言和C++语言的联系:nnnC++是C语言的超集,两者拥有类似的语法nnnC语言和C++语言的区别:nnnC是面向过程的语言,而C++是面向对象的语言nC和C++在动态分配内存方面存在差异,C使用malloc/free函数,而C++使用除此之外还有new/delete关键字nC语言中没有class,只有struct;C++中两者都有。class的默认访问修饰符是...
离开C语言,初入前端技术
开始前...nn首先nn本人目前是一个就读于软件技术专业的大一菜鸟,初入CSDN,望借此以记录下学习历程中的点点滴滴...nn从开学时的懵懵懂懂,到现在对C语言编程的概念有一定的理解,与此同时,我也决定下了未来学习发展的方向:“前端”nn初入前端nn结构、表现、行为nn一个网页页面主要由3大部分组成nn结构nn     HTMLnn     用于描述页面的结构nn表现nn     CSSnn   ...
Java和C语言的语句对比
1、Java中没有sizeof、goto、const这些关键字,但不能用goto、 const作为变量名。nn2、在java中,字符常量占两个字节,在C语言中,字符常量占四个字节。nn3、在java中,一个字节的变量,如下用,需要强制类型转换,在C语言中不用强制类型转换。nn在java语法中:nnbyte b = 2;nnb = (byte)(b+2);    //强制类型转换nnb += 2; ...
ST表 详解(C语言描述)
    前面先给大家讲一下ST表的基础原理nn nn    ST表是一种常用算法,用于快速求区间的最值,当要大量计算区间最值时,使用ST表可以节省时间。n    其复杂度为NlogN, 普通算法为N*N,缺点是不能在线修改值,(还有一种算法叫线段树可以,以后会讲)n    ST[ i ][ j ] 的值为区间[ i, i + 2^j)  的最值,注意区间为左闭右开;n   利用动态规划思想,区间[...
C语言和汇编语言的关系
在写驱动程序或者优化程序的时候,我门可能会使用到汇编语言,为了理解汇编语言,我们先看看下面这个简单的例子:n#this is in a file first.sn.global mainnmain:n movl $20, %eaxn movl $10, $ebxn ret
C语言和c++中的static总结
rnC语言中的staticrnrnstatic修饰全局变量,改变了变量的变量的链接属性,使得这个全局变量只能在本文件中访问rnstatic修饰局部变量,使其生命周期变长,只在该作用域中使用,离开该作用域。该变量没有被销毁,还在内存中,直到程序运行结束才释放,被static修饰的局部变量放在静态区存储区rnstatic修饰函数,改变了函数的链接属性,只能在本文件中调用,不能被其他文件访问rn注意:静态变量可以多...
C++字符串与C语言中的字符串处理函数
C++字符串与C语言中的字符串处理函数nnnn一.C++中的字符串类nn下面是简单的一种实现:nnnn#ifndef STRING_H_INCLUDEDn#define STRING_H_INCLUDEDnnclass Stringn{npublic:n String (const char* cstr = 0);n String (const String&);n St...
C语言与C++、C++与JAVA 的区别总结
C 和 C++ 的区别nC语言面向过程,重点在于算法和数据结构。程序员需要考虑,从输入到输出,是如何一步一步的进行。n当软件变得越来越复杂,代码越来越长,一个人的脑力有限,往往写到后面,就忘了前面是如何做的。而且复杂的软件需要很多人协同一起完成,这时面向过程的方法就不太实用。因此一种面向对象的软件开发方法应运而生。nC++语言是面向对象语言,它在C的基础上添加了面向对象、模板等现在程序设计语
C语言和C++输出格式问题
问题1:如果N的4位数字全相等,则在一行内输出“N - N = 0000”;否则将计算的每一步在一行内输出,直到6174作为差出现,输出格式见样例,每行中间没有空行。注意每个数字按4位数格 7766 - 6677 = 1089n 9810 - 0189 = 9621n 9621 - 1269 = 8352n 8532 - 2358 = 6174问题2:星际战争开展了100年之后,NowCoder终...
文章热词 C/C++ C/C++培训 C/C++入门教程 C/C++课程 C/C++学习
相关热词 go语言和c语言 c语言和c++java c语言和c++的区别 python在线培训指导 python教程c语言

相似问题

7
Springmvc国际化设置默认语言不起作用,并且找不到所配置的属性
8
不论用什么语言,写一个程序
1
SAP ABAP语言学习求助
1
用多个语言编写系统的问题
1
各位大神,求用TCL语言写个程序:计算两个字符串的最大公共字串的长度,字符不区分大小写。
2
vb语言内的控件调用多个嵌套数组中的一个,怎么通过事件过程的方式写?
2
请问vb语言怎么在函数里根据用户inputbox输入的不同,切换到别的函数调用,或者继续执行
2
vb语言关于多个ocx和主程序共享数组的问题,每个数组可以拥有一个名字作为全局变量名
2
求指教!在用C#语言写WPF程序时碰到 一个问题,没有思路
1
VB语言的dim语句可以嵌套在另一个dim语句中使用么?是不是要分行写?
2
采用什么语言,可以不依赖于运行环境?
1
VB6语言系统里控件下使用的将字符串作为数组下标的方法能不能放在函数里调用?
1
VB语言怎么给数组元素不同的变量名,而不是只有一个数组的变量名?
1
VB语言怎么将变量名作为数组元素的名称呢?怎么给数组中每个数一个变量名?
2
请问vb语言的函数中怎么绕过参数给函数传值?
1
vb语言怎么通过函数跳转的方式代替call语句实现函数调用?
2
关于哈夫曼编码的c语言和高数的考题,请大神解答一下
2
c语言苏小红第三版11章。。。不会做啊 心累
1
请问下,现在网上那些淘宝数据分析工具是用什么技术或语言做的?
2
C++ 语言关于结构体的排序的功能