关于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。

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

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

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

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

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

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++,Java,C#等来说算是低级语言,但是相对于汇编这种低级语言来说又是高级的。

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

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

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

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

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

C在经过编译之后执行效率更高,因此和硬件契合度也就更好,像楼上所说,对效率要求高的代码很多都是C和汇编混写的。