C语言与C的区别.docx
《C语言与C的区别.docx》由会员分享,可在线阅读,更多相关《C语言与C的区别.docx(10页珍藏版)》请在冰点文库上搜索。
![C语言与C的区别.docx](https://file1.bingdoc.com/fileroot1/2023-6/17/b8d2bf45-15d5-4691-8a77-3a34c2eb3a2b/b8d2bf45-15d5-4691-8a77-3a34c2eb3a2b1.gif)
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++的区别有什么?
其他的东西都不需要多说,就象类,继承,引用等,大家都知道。
这里讲的是调用编译的区别.大家看WIN32SDK的头文件,总是可以看到:
ifdef__cplusplusexternC
endif
ifdef__cplusplus
endif
这个就是直接能够体现实际编程时区别的地方。
在WIN系列下,所有的WIN32SDK提供的LIB都是以C的形式存在的。
当然,C和C++同样都支持C,STDCALL,FASTCALL调用。
为什么系统提供C编译器编译的LIB而不是C++编译的LIB呢?
这里其实就是C和C++编译器不同的地方。
所有的函数名称只有在汇编编译器下才最清楚。
因为经汇编编译器编译的函数不经过任何修饰。
C的编译器编译出来的函数名称如果在汇编编译器看来一个C调用将在函数名前家下划线('_')。
而一个STDCALL的函数将是_FUNC@NUMBER的形式,如FUNC(void)经过编译器后成为_FUNC@0。
一个FASTCALL调用的函数被编译成@FUNC@0。
顺便提一下,在WIN32的编译器里不再需要PASCALL调用,VC6已经取消了对PASCALL的支持.
光看C的编译还不够,看一下C++编译器是怎么干的。
在缺省情况下,一个C++的函数经过C++编译器后编译出的函数名包括函数名,所属的类,参数类型,调用约定,返回类型。
而且更要命的是这么多的信息,只有函数名和类名在编译后还依稀可见,其他就是一长串的ABCD字母,根本就是无法辨认其意义的。
我们在VC手册里可以看到一个例子:
void__stdcallb:
:
c(float);----------->?
c@b@@QAGXM@Z
一个函数被编译得连名字也不知道怎么样了.这么一来.如果SDK提供的是C++编译器提供了LIB.那么可以说就无法编译任何一个完整的WIN程序.更加不用说什么混合语言编程.
现在,VC编译器提供了个extern语句,当出现extern'C'语句,括号里的函数将以C方式经过编译器.从而使提供库程序方便那么点。
C语言与C++的区别有很多:
1,全新的程序程序思维,C语言是面向过程的,而C++是面向对象的。
2,C语言有标准的函数库,它们松散的,只是把功能相同的函数放在一个头文