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

张开发
2026/4/19 5:44:03 15 分钟阅读

分享文章

C/C++基础语法复习(一):C++与C语言的区别,主要有这些
和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失败返回0new失败抛出bad_alloc异常。e. new和malloc开辟内存的位置不同。malloc开辟在堆区new开辟在自由存储区域。6.作用域多了个名字空间namespace所谓名字空间就是namespace我们定义一个名字空间就是定义一个新作用域。7.布尔常量布尔常量共有两个它们都是标准的 C 关键字True 和 false顾名思义就是对与错。(C里面都是让程序员自己定义8.Lambda 函数C11 提供了对匿名函数的支持,称为 Lambda 函数(也叫 Lambda 表达式)。Lambda 表达式把函数看作对象。Lambda 表达式可以像对象一样使用比如可以将它们赋给变量和作为参数传递还可以像函数一样对其求值。Lambda 表达式本质上与函数声明非常类似。表达式例子(parameters)-return-type{body}捕捉列表。捕捉列表总是出现在 lambda 表达式的开始处。事实上 是 lambda 引出符。编译器根据该引出符判断接下来的代码是否是 lambda 函数。捕捉列表能够捕捉上下文中的变量供 lambda 函数使用。(parameters)参数列表。与普通函数的参数列表一致。如果不需要参数传递则可以连同括号 () 一起省略。mutablemutable 修饰符。默认情况下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编程的小伙伴就可以进来交流。

更多文章