C/C++基础语法复习(一):C++与C语言的区别,主要有这些

yumo6662周前 (07-01)技术文章14


和C的区别

1.概念:

C++ 是一种静态类型的、编译式的、通用的、大小写敏感的、不规则的编程语言,支持过程化编程、面向对象编程和泛型编程。

C++ 被认为是一种中级语言,它综合了高级语言和低级语言的特点。

C++的很多基础语法跟C差不多。

2. 函数默认值:

C89标准的C语言不支持函数默认值,C++支持函数默认值,且需要遵循从右向左赋初始值。

3.函数重载:

C语言不存在函数重载,C++根据函数名参数个数参数类型判断重载,属于静多态,必须同一作用域下才叫重载。

C不有是因为编译器在编译的时候只会给函数重命名,所以在编译器看来重载函数们都是一样的(编译器不知道该调用哪个)。C++的重载函数们生成的符号表是不一样的(根据返回类型和参数类型数量等区分),所以可以搞函数重载.

4.const:

C中的const叫只读变量,只是无法做左值的变量;C++中的const是真正的常量,但也有可能退化成c语言的常量,默认生成local符号。

5.分配内存:

a. malloc()和free()是C语言中动态申请内存和释放内存的标准库中的函数。而new和delete是C++运算符。new和delete底层其实还是调用了malloc和free。

b. malloc时需要指定大小,还需要类型转换。new时不需要指定大小因为它可以从给出的类型判断,并且还可以同时赋初始值。(这也使得malloc不安全)

c. free只释放空间,delete先调用析构函数再释放空间(如果需要).同理,new也是先调用构造函数再申请空间。

d. 内存不足(开辟失败)时处理方式不同。malloc失败返回0,new失败抛出bad_alloc异常。

e. new和malloc开辟内存的位置不同。malloc开辟在堆区,new开辟在自由存储区域。

6.作用域:

多了个名字空间(namespace),所谓名字空间就是namespace,我们定义一个名字空间就是定义一个新作用域。

7.布尔常量:

布尔常量共有两个,它们都是标准的 C++ 关键字:

True 和 false,顾名思义就是对与错。

(C里面都是让程序员自己定义)

8.Lambda 函数:

C++11 提供了对匿名函数的支持,称为 Lambda 函数(也叫 Lambda 表达式)。

Lambda 表达式把函数看作对象。Lambda 表达式可以像对象一样使用,比如可以将它们赋给变量和作为参数传递,还可以像函数一样对其求值。

Lambda 表达式本质上与函数声明非常类似。

表达式例子:

[capture](parameters)->return-type{body}

[capture]:捕捉列表。捕捉列表总是出现在 lambda 表达式的开始处。事实上,[] 是 lambda 引出符。编译器根据该引出符判断接下来的代码是否是 lambda 函数。捕捉列表能够捕捉上下文中的变量供 lambda 函数使用。

(parameters):参数列表。与普通函数的参数列表一致。如果不需要参数传递,则可以连同括号 () 一起省略。

mutable:mutable 修饰符。默认情况下,lambda 函数总是一个 const 函数,mutable 可以取消其常量性。在使用该修饰符时,参数列表不可省略(即使参数为空)。

->return_type:返回类型。用追踪返回类型形式声明函数的返回类型。出于方便,不需要返回值的时候也可以连同符号 -> 一起省略。此外,在返回类型明确的情况下,也可以省略该部分,让编译器对返回类型进行推导。

{statement}:函数体。内容与普通函数一样,不过除了可以使用参数之外,还可以使用所有捕获的变量。 在 lambda 函数的定义式中,参数列表和返回类型都是可选部分,而捕捉列表和函数体都可能为空。

例子如下:

[](int x, int y){ return x < y ; }

[](int x, int y) -> int { int z = x + y; return z + x; }

其实也不是很玄乎,匿名函数本质上就是个随手用的函数,省去了定义的麻烦,直接用完就丢。也可以作为传递给某些应用,比如消息处理。

9.输入输出:

引用:
https://www.runoob.com/cplusplus/cpp-basic-input-output.html

博客园:Parachute黑喵

想要在程序员生涯内有更高的成就的话,C/C++就是一个既可以强化思维能力,又可以打好编程基础的编程语言,将来想要做软件开发,有一份好的前景的话,学习C/C++的话笔者有一个C/C++的编程俩千人羣(Q艘索:C/C++编程学习13)群,你如果感觉自学C/C++语言有困难的话,有兴趣学习或者了解一下C/C++编程的小伙伴就可以进来交流。


相关文章

C++ 与 C 的那些事儿:深度剖析两者区别

在编程的世界里,C++ 和 C 就像是一对有着紧密血缘关系却又各具特色的兄弟。对于很多初学者或者有一定编程经验的人来说,分清它们之间的差异至关重要。今天,我们就来深入探讨一下 C++ 和 C 的区别。...

简述 C语言 有和 C++ 的基本区别,你真的懂吗?(新手面试必学)

1、c和c++的头文件不同c的头文件------#include c++的头文件---#include2、输入输出不同输入: int i = 10; c:scanf("%d",&...

C与C++ 的真正区别在哪里?

C和C++区别为:结构不同、设计不同、函数库不同。C语言:C语言结构只有成员变量,而没成员方法。C++:C++结构中可以有自己的成员变量和成员函数。一、结构不同1、C语言:C语言结构只有成员变量,而没...

C 语言和 C++ 有什么区别?老程序员居然这样理解,不怕你不懂

差不多是win98跟winXP的关系。C++是在C的基础上增加了新的理论,玩出了新的花样。所以叫C加加。C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入...

C++和C语言的区别在哪里?

C++是目前国内信息学奥赛的指定语言,它也是现如今最为流行的编程语言之一,因此不少孩子在选择编程语言学习时,会选择C++这一编程语言。由C++的名字不难看出,它与老牌语言C语言之间关系匪浅。那么,C+...

C++和C语言已经不是一种语言了,现代C++与C不一样了

C++和 C 完全不一样。学 C++前可以不用学 C,它和 C 的相似度都比不过 Java。在 C++11 之前,C++可以说是包含类的...