C++ 知识点整理

C与C++的区别

联系:

c语言是c++ 的子集,C++兼容c 语言的大部分语法结构

不同

1、C 语言主要是面向过程的,强调如何通过一个输入,通过函数运算,得到输出,

C++,主要面向对象的。首要考虑如何构造成一个对象模型,使对象模型和要解决的问题契合,根据获得对象的状态信息,得到输出。

2、在内存管理方面,C通过(malloc/free)管理内存,而c++,不但通过malloc 和free,还通过(new/delete)进行管理内存

malloc/free和new/delete的区别

1,malloc/free 是函数,new/delete是关键字

2,malloc 分配的内存位于堆上,new开辟的内存是自由存储空间,可以使是堆上,也可以是静态存储区

3、malloc开辟的空间即可以给单个对象用也可以给数组用,释放的方式都是free();而new开辟对象数组用的是new[size] 释放的的时候是 delete[]

4、是否可以被重载,我们可以重载自己的operator new/delete,但是不可以重载new/delete/malloc/free;

3、C中的struct和C++的类,C++的类是C所没有的,但是C中的struct是可以在C++中正常使用的struct在C++中可以和class一样当做类使用,而唯一和class不同的地方在于struct的成员默认访问修饰符是public,而class默认的是private;

4、C++支持函数重载,而C不支持函数重载,而C++支持重载的依仗就在于C++的名字修饰与C不同?

5、C++中有引用,而C没有;

  引用和指针的区别:

1.指针有自己的一块空间,而引用只是一个别名; (使用sizeof看一个指针的大小是4,而引用则是被引用对象的大小;) 
2.指针可以被初始化为NULL,而引用必须被初始化且必须是一个已有对象 
的引用; 
3.作为参数传递时,指针需要被解引用才可以对对象进行操作,而直接对引 
用的修改都会改变引用所指向的对象; 
4.可以有const指针,但是没有const引用; 
5.指针在使用中可以指向其它对象,但是引用只能是一个对象的引用,不能 
被改变; 
6.指针可以有多级指针(**p),而引用至于一级; 
7.指针和引用使用++运算符的意义不一样;int a=0;
int b=&a;
int *p=&a;
b++;相当于a++;b只是a的一个别名,和a一样使用.
p++;后p指向a后面的内存




     


<think>好的,我需要帮助用户整理蓝桥杯C++竞赛的知识点。首先,我得回顾用户提供的三个引用内容,看看有哪些关键点可以提取出来。 引用[1]提到了万能头文件`#include <bits/stdc++.h>`,这在竞赛中很常用,可以简化代码。另外,实数函数和求幂次运算符可能指的是数学函数,比如`pow()`,或者位运算中的移位操作。需要确认这些内容的具体细节,确保准确。 引用[2]讨论了自增运算符`i++`和`++i`的区别,这是C++中的基础知识点,容易在考试中出现。用户可能还需要其他运算符的注意事项,比如逻辑运算符、位运算符等,但根据现有资料,先重点整理自增运算符的例子和区别。 引用[3]提到了一些客观题知识点,比如C++的基本模块不是函数,而是可能指模块结构或其他概念?这里需要进一步核实。另外,数组的定义、递归、数组和指针的关系、字符串处理都是重点。可能还需要补充指针和数组的区别,以及字符串相关函数,比如`strcpy`、`strlen`等。 用户需要的是全面的知识点总结,所以除了引用中的内容,可能还需要补充其他常见考点。例如,标准模板库(STL)的使用,如`vector`、`queue`、`stack`等容器,以及排序算法`sort()`。此外,输入输出流的优化(`ios::sync_with_stdio(false)`)、动态内存分配、结构体、文件操作等也可能是考点。 接下来要组织这些知识点,结构清晰,分点列出。需要确保每个部分都有足够的解释和例子,特别是代码示例。例如,在讲解自增运算符时,给出具体的代码片段,说明前置和后置的区别。在讨论递归时,可以举阶乘或斐波那契数列的例子。 还要注意用户提到的LaTeX格式要求,行内数学公式用`$...$`,独立公式用`$$...$$`。例如,在讲解位运算时,可能需要用到数学表达式,比如左移运算符`<<`相当于乘以2的幂次,可以写成`$a << n = a \times 2^n$`。 另外,用户要求生成相关问题,我需要根据整理知识点提出相关的问题,帮助复习。例如,关于递归的应用场景、指针和数组的区别、STL容器的使用等。 最后,确保回答符合用户的所有格式要求,正确使用引用标识,并且语言为中文。避免使用Markdown格式,但示例代码块需要保留。检查是否有遗漏的重要知识点,比如蓝桥杯常考的动态规划、贪心算法等,但根据引用内容,可能主要集中在基础语法和结构上,所以先围绕引用内容展开,再适当补充其他常见考点。 总结下来,结构大致分为:头文件、运算符、基本语法结构、数组与指针、字符串处理、递归、STL、其他注意事项。每个部分给出解释和示例,最后生成相关问题。</think>### 蓝桥杯C++竞赛知识点整理 #### 1. 头文件与常用库 - **万能头文件**:`#include <bits/stdc++.h>` 包含所有标准库,适合竞赛快速编码[^1]。 - **数学函数**:如求幂次可用`pow(x, n)`,或位运算`a << n`等效于$a \times 2^n$。 #### 2. 运算符与表达式 - **自增运算符**: - `i++` 先使用`i`再自增,`++i` 先自增再使用。 示例代码: ```cpp int a = 1, b = 1; int n1 = a++; // n1=1, a=2 int n2 = ++b; // n2=2, b=2 ``` 引用[^2]。 #### 3. 基本语法结构 - **函数与模块**:C++程序的基本模块是函数,但程序入口为`main()`,需注意题目中可能涉及的判断题[^3]。 - **递归**:常用于分治算法(如快速排序、斐波那契数列),需掌握递归终止条件和调用逻辑。 #### 4. 数组与指针 - **数组定义**:需明确大小,如`int arr[10];`。 - **指针与数组关系**:数组名可视为指针,如`arr[i]`等效于`*(arr + i)`。 #### 5. 字符串处理 - **C风格字符串**:使用字符数组或`<cstring>`库函数(如`strcpy`, `strlen`)。 - **字符串输入输出**:注意`cin`与`scanf`对空格的处理差异。 #### 6. STL(标准模板库) - **常用容器**: - `vector`:动态数组,支持快速随机访问。 - `queue`/`stack`:队列和栈的实现。 - **排序算法**:`sort(begin, end)`默认升序,可自定义比较函数。 #### 7. 其他注意事项 - **输入输出优化**: ```cpp ios::sync_with_stdio(false); // 关闭同步,提升速度 cin.tie(0); // 解除cin与cout的绑定 ``` - **位运算**:如`a & 1`判断奇偶,`a >> 1`等效于$a \div 2$。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值