我的账户
猩码学苑

专注C++开发菁英教育

亲爱的游客,欢迎!

已有账号,请

如尚未注册?

C++和C的区别与联系你知道多少?

2023-3-16 17:53

IT行业发展至今,C语言和C++语言,一直都炙手可热。这两门称呼类似的语言,一定是有联系的,C++和C具体的区别与联系是什么呢?今天霸哥就来揭晓。在探讨C++与C的区别与联系之前,我们先要知道,他们二者分别是什么。 ...

IT行业发展至今,C语言和C++语言,一直都炙手可热。这两门称呼类似的语言,一定是有联系的,C++和C具体的区别与联系是什么呢?今天霸哥就来揭晓。在探讨C++与C的区别与联系之前,我们先要知道,他们二者分别是什么。

C语言是什么?

C语言是一门面向过程的、抽象化的通用程序设计语言。广泛应用于底层开发。最新的C语言标准是C18。


C++是什么?

C++,又被称为c plus plus。是一种计算机高级程序设计语言,由C语言扩展升级而产生,最早于1979年由本贾尼·斯特劳斯特卢普在AT&T贝尔工作室研发。

通过上述C语言和C++的概念,我们可以简单得知:C++是由C语言扩展升级而产生的。从某种程度上我们可以直接称C++为C语言的超集。也就是说,一个有效的C程序,也可以看做是一个有效的C++程序。


C++与C语言的区别


1、C++支持许多附加特性

C++与C语言中有一些规则上的不同,这些不同点会影响C程序作为C++程序编译时的运行情况。


2、函数原型
在C++中,函数原型是不可或缺的。但在C语言中函数原型是可选的。表现形式就是声明函数后,函数后面的圆括号内是否为空。

在C语言中,圆括号为空是前置原型。

在C++中,圆括号为空是该函数没有参数。

3、char常量

我们先举个例子:

C语言中把char常量看做int类型。准确的说,字符编码被储存为int类型的值。相同的数值也储存在变量ch中,但是在ch中只占1字节的内存。

C++中把char常量看做char类型。'A'和ch都占用1字节。


4、const限定符

在C语言中,全局的const具有外部链接;但是在C++中,具有内部链接。


5、结构和联合
声明一个有标记的结构或联合后,就可以在C++中使用这个标记作为类型名:


在C和C++中,都可以在一个结构的内部声明另一个结构:


在C中,随后可以使用任意使用这些结构,但是在C++中使用嵌套结构时要使用一个特殊的符号:


6、枚举
C++使用枚举比C严格。

在C++中,不使用关键字enum也可以声明枚举变量:

7、指向void的指针

  C++和C都可以把任意类型的指针赋给void的指针。不同的是,只有使用显式强制类型转换才能把指向void的指针赋给其他类型的指针。

C++可以把派生类对象的地址赋给基类指针,但C语言不涉及这方面的特性。


8、布尔类型
C++中,布尔类型是bool,其ture和false都是关键字。

C语言中,布尔类型是_Bool,包含stdbool.h头文件才能使用bool、true和false关键字。


9、可选拼写
C++中,or和 || 是一样的。还有一些其他的关键字,都是可选拼写。

C99和C11中,可选拼写被定义为“宏”,想要使用它们得包含iso646.h才可以。


10、宽字符支持
C++中,wchar_t是内置类型,且为关键字。

C99和C11中,wchar_t类型被定义在多个头文件中。


11、复数类型
C++在complex头文件中提供一个复数类来支持复数类型。

C语言有内置的复数类型,并通过complex.h头文件来支持。这两种方法区别很大,不兼容。C更关心数值计算社区提出的需求。


12、内联函数
C99支持了C++的内联函数特性。但是,C99的实现更加灵活。

C++中,内联函数默认是内部链接,如果一个内联函数多次出现在多个文件中,该函数的定义必须相同,而且要使用相同的语言记号。但是在C中可以这样做。

C语言允许混合使用内联定义和外部定义,但C++不允许。


13、C++11中没有的C99/C11特性
本文开头霸哥说过,C++可以看做C语言的超集,但是C99标准增加了一部分C++没有的新特性。


相信通过霸哥的总结,大家对C++和C语言的区别与联系,已经有了更深层次的理解。现在的市场上,C++开发人才依旧稀缺。想要了解更多C++开发相关内容,欢迎咨询霸哥!


路过

雷人

握手
1

鲜花

鸡蛋

刚表态过的朋友 (1 人)

该文章已有0人参与评论

请发表评论

全部评论

关注我们
专注C++菁英教育

客服电话:18009298968

客服时间:9:00-21:00

猩码学苑 - 专注C++开发菁英教育!( 陕ICP备2025058934号-1 )

版权所有 © 陕西菁英数字科技有限公司 2023-2026