C++与C的区别终于说清楚了!

供稿:hz-xin.com     日期:2025-01-13
在很大程度上,C++是C的超集,一个有效的C程序在C++环境下也能够运行。然而,C++提供了一系列附加特性,这些特性使得C程序作为C++程序编译时可能以不同的方式运行或根本不能运行。本节将重点探讨这些区别。使用C++编译器编译C程序时,这些不同之处尤为明显。虽然C和C++的区别对本书的示例影响较小,但如果将C代码作为C++程序编译,可能会产生错误消息。

在C++中,函数原型是必不可少的,而C语言允许在声明函数时省略圆括号。例如,在C中空圆括号表示前置原型,但在C++中表示该函数无参数。因此,intslice()和int slice(void)在C++中被视为相同。然而,在C++中允许用户声明多个同名函数,只要它们的参数列表不同即可。

在C中,char常量被视为int类型,而在C++中,它们被视为char类型。在C中,char常量'A'被储存为int大小的内存,而在C++中,'A'和char变量ch都占用1字节内存。C++允许利用char常量被视为int类型的特点来表示整数值,例如在特定系统中,可以使用多字符常量表示一个4字节int值。然而,对于字符串"ABCD",它与多字符常量'ABCD'不同,后者表示一个5字节内存块的地址。

在C++中,全局的const变量具有内部链接,而在C语言中具有外部链接。这使得C++规则旨在在头文件中更方便地使用const变量。使用关键字extern可以使const变量具有外部链接。C++可以使用const声明普通数组的大小,并且可以使用const值初始化其他const变量,这是C语言中所没有的。

在C和C++中,声明结构或联合后,都可以在C++中使用这个标记作为类型名,但在C中可能会导致结构名与变量名冲突。在C++中,可以在一个结构的内部声明另一个结构,而C中可以在结构内部声明结构,但需要使用一个特殊的符号。

在C++中,枚举比C严格,枚举常量只能赋给枚举变量,并且不能将int类型值直接赋给枚举变量。同样,不能递增枚举变量,除非通过显式类型转换。C++允许不使用enum关键字来声明枚举变量,但变量名与枚举类型名冲突。

在C++中,可以把任意类型的指针赋给指向void的指针,这与C语言相同。C++支持派生类对象地址赋给基类指针的特性,这是C语言所不具备的。

在C++中,布尔类型是bool,而C语言中的布尔类型是_Bool,需要包含stdbool.h头文件才能使用。在C++中,可以用or代替||作为可选拼写,而在C99和C11中,这些可选拼写被定义为宏,需要包含iso646.h头文件才能使用。

在C++中,wchar_t是内置类型,而C99和C11中则定义在多个头文件中。char16_t和char32_t在C++11中是关键字,在C11中定义在uchar.h头文件中。C++通过iostream头文件提供宽字符I/O支持,而C99使用wchar.h头文件提供不同的I/O支持。

C++在complex头文件中提供复数类来支持复数类型,C语言有内置复数类型,并通过complex.h头文件来支持,这二者的方法有显著区别,不兼容。C++在C99中增加了内联函数特性,但实现更加灵活,内联函数在C++中默认为内部链接。

最后,C99标准增加了C++没有的一些新特性,如结构化控制流、泛型编程等。对于想要学习C语言的读者,《C Primer Plus第6版中文版》是一本优秀的选择,它涵盖了C语言编程中的核心内容,并适合初学者和希望深入学习C语言的开发者。

C++与C的区别终于说清楚了!
使用C++编译器编译C程序时,这些不同之处尤为明显。虽然C和C++的区别对本书的示例影响较小,但如果将C代码作为C++程序编译,可能会产生错误消息。在C++中,函数原型是必不可少的,而C语言允许在声明函数时省略圆括号。例如,在C中空圆括号表示前置原型,但在C++中表示该函数无参数。因此,intslice()...

C++Primer Plus和C++Primer有什么区别
一、出版时间不同 1、C++Primer Plus:是2015年人民邮电出版社出版的图书,作者是 [美]普拉塔(Prata,S.)。2、C++Primer:是2006年6月1日人民邮电出版社出版图书,作者Stanley B. LippmanBarbara E. Moo JoséeLaJoie 。二、内容不同 1、C++Primer Plus:针对C++初学者,从C语言基础知识开始介绍,...

如何学好C++呢?
44.决不要因为程序“很小”就不遵循某些你不熟练的规则——好习惯是培养出来的,而不是一次记住的;45.每学到一个C++难点的时候,尝试着对别人讲解这个知识点并让他理解——你能讲清楚才说明你真的理解了;46.记录下在和别人交流时发现的自己忽视或不理解的知识点;47.请不断的对自己写的程序提出...

c#和java哪个更好点。
c#主要是为了开发一些和网络相关的程序,c#主要的问题也是.net的问题在于运行程序的机器必须安装有相应版本的framwork——微软的东西向来移植性都很低,即便是用C语系开发的程序也完全没有什么移植性,更何况是他们自己研究出来的一个语言了。而.net则是专门用于WEB编程的一个架构平台,当然也可以些application,但是并不合...

C++的学习方法!~
的第一步就是理解基本语言(什么是基本语言?就是C++中better c部分)。 在此,我还想提出一点十分重要的概念:一门语言的最本质的东西就是其类型系统,任何语言都有自己的独特的类型系统,学习C++就是学习他的类型系统。所以首先需要彻底明白什么是数据类型这个概念。这样你的思路就清楚了,你有选择,从每一种C++支持的...

满分跪求!!网页编程!自学规划!发展前景!诸多问题!求好心的高手指点迷津...
Stroustrup:从技术上讲,我并不认为Java和C#是什么“从头设计的”革新型语言。倘若Java是从技术原则出发,从头设计,大概就不会模仿C\/C++那种丑陋和病态的语法了(不必惊讶,Stroustrup在很多场合表示过,C++采用C的语法形式,实在是迫于兼容性。他本人更偏爱Simula的语法——译者)。 我认为,只有当程序员们面对的问题发生了...

软件工程专业学生应该学些什么?
另外,汇编语言、C\/C++、数据结构和算法、特别是操作系统等软件基础课也是十分重要的。我们的主要目地是能看懂硬件工作原理,但重点应是在嵌入式软件,特别操作系统级软件,那将是我们的优势。我们的研究生里有些是学电子、通信类专业过来的,有较好的模拟电路和单片机基础,学嵌入式非常合适。嵌入式本身就是从单片机发展...

编程中VB跟VC指的是什么 请详细说清楚...
CDialog CWinApp CGdiObject及子类 CString、CPoint、CRect、CSize等简单数据类型 CFile 以上提到的这些内容,是每个人都会用到的内容。 二、MFC简介 上述主要内容都是与实际操作关系非常密切的,在此不可能讲清楚;而且,这些在一般的书里都会讲到。我主要将最重要的MFC介绍一下。 MFC是对WindowsAPI的封装,...

如何学习C语言
1.C语言是一种面向过程的编程语言,非常靠近底层的编程语言,相对来说来讲语法细节不是很多,但是这种自由组合的力度,灵活性非常强,真要组合起来代码也是比较难看懂的,所以linux内核源码真正内核机制方面的代码基本很难看懂,关键在与灵活运用,所以要想掌握的彻底就需要把基础概念彻底搞明白,C语言难易理解的概念也就是那...

处女 与 非处的区别不仅仅就是一曾膜那么简单,我终于明白了,非处女她10...
处女 与 非处的区别不仅仅就是一曾膜那么简单,我终于明白了,非处女她100分百的会背叛你,不是吗? 她爱的那个人永远都是那个开她雹的那个人。你们其实都很虚伪的,说什么只有感情好什么的。去你吗。。我告戒大家,如果取老婆绝对不能取非处,不是因为什么什么,你想不被抛弃就听我的... 她爱的那个人永远都...