一、基础结构
| 知识点 | 核心内容 | 关键示例代码片段 |
|---|---|---|
| 程序入口 | 所有程序从main()函数开始执行,return 0表示正常结束(非0为异常) | int main() { return 0; } |
| 输入输出 | cout输出(<<运算符),cin输入(>>运算符);endl换行刷新 | cout << "年龄:" << age; cin >> age; |
| 预处理指令 | #include引入头文件(标准库用<>,自定义用"");#define定义宏 | #include "myfile.h"; #define PI 3.14 |
| 命名空间 | std是标准库命名空间,using namespace std;可省略前缀,也可直接用std:: | std::cout << "Hi";(不省略前缀) |
二、数据存储
| 知识点 | 核心内容 | 关键示例代码片段 |
|---|---|---|
| 基本数据类型 | 整数(int(4字节)、short(2字节)、long(4/8字节));浮点(float(4字节,加f后缀)、double(8字节));char(1字节,单引号包裹);bool(1字节,true/false) | float f = 3.14f; char c = 'A'; |
| 变量声明与初始化 | 先声明后使用,可声明时初始化(推荐) | int a; a = 5;(分步);int b = 10;(直接) |
| 变量命名规则 | 字母/数字/下划线组成,不能以数字开头,区分大小写,禁用关键字 | int studentCount = 100;(合法) |
| 数组 | 静态数组:类型 名[长度] = {元素}(长度为常量,未初始化元素默认为0);动态数组:类型* 名 = new 类型[长度],必须用delete[]释放 | int arr[] = {1,2,3}; int* p = new int[5]; delete[] p; |
| string类 | 标准库字符串类,支持拼接(+)、赋值(=)、比较(==/!=/<等)、长度(size()/length())、子串(substr(起始索引, 长度)) | string s = "Hello"; s += " World"; s.substr(2, 3); |
| const修饰符 | 修饰变量:const 类型 名 = 值(不可修改);修饰指针:const 类型* p(指向常量,值不可改)、类型* const p(指针常量,指向不可改) | const int MAX = 100; const int* p1; int* const p2 = &a; |
三、逻辑控制
| 知识点 | 核心内容 | 关键示例代码片段 |
|---|---|---|
| 算术运算符 | +、-、*、/、%(整数除法取整,%取余) | int rem = 10 % 3;(结果1) |
| 复合赋值运算符 | +=、-=、*=、/=,简化赋值操作 | x += 3;(等价于x = x + 3) |
| 比较与逻辑运算符 | 比较(>、<、==、!=);逻辑(&&与、 | |
| 运算符优先级 | 算术>比较>逻辑>赋值;不确定时加() | (a + b) * c;(确保先加后乘) |
| 自增自减 | ++i(先加后用)、i++(先用后加);--同理 | int b = ++a;(a先+1,再赋值给b) |
| 条件表达式 | 三目运算符:条件 ? 表达式1 : 表达式2(条件为真返回表达式1,否则返回2) | int max = (a > b) ? a : b; |
| if-else条件语句 | 多分支用else if,根据条件执行不同代码块 | if (score >= 90) { ... } else if (score >= 60) { ... } |
| switch语句 | 多分支判断,case后接常量,break跳出分支,default处理默认情况 | switch(grade) { case 'A': ... break; default: ... } |
| for循环 | 适合已知循环次数,格式:for(初始化; 条件; 更新) | for (int i = 0; i < 5; i++) { ... } |
| while/do-while循环 | while先判断后执行,do-while至少执行一次 | while (num > 0) { ... } |
| 循环控制 | break跳出当前循环;continue跳过本次循环剩余代码,进入下一次循环 | for(...) { if(i==3) break; } |
| 变量作用域 | 全局变量(函数外,全程有效)、局部变量(函数内)、块变量(代码块内);块内变量屏蔽外部同名变量 | int a=1; { int a=2; cout << a; }(输出2) |
四、核心特性
| 知识点 | 核心内容 | 关键示例代码片段 |
|---|---|---|
| 函数定义 | 格式:返回类型 名(参数列表) { 函数体; return 返回值; };无返回值用void | void print(int x) { cout << x; } |
| 函数声明 | 可在调用前声明(原型),定义可在后;声明需与定义参数、返回类型一致 | int add(int a, int b);(声明) |
| 函数重载 | 同名函数,参数类型/个数/顺序不同,返回值不同不可作为重载依据 | int add(int a, int b); double add(double a, double b); |
| 函数默认参数 | 从右往左连续指定默认值,调用时可省略带默认值的参数 | int multiply(int a, int b = 2); |
| 类与对象 | class定义类,private(私有)、public(公有)控制访问权限;构造函数初始化对象 | class Person { public: Person(string n) { ... } }; |
| 对象创建与使用 | 栈对象:类名 对象名(参数);通过对象名.成员访问 | Person p("Tom", 18); p.introduce(); |
| 指针 | 存储变量地址,&取地址,*解引用操作;数组名是首元素地址,指针可遍历数组 | int* p = # *p = 20; int arr[3]={1,2,3}; int* p=arr; cout << *(p+1);(输出2) |
| 引用 | 变量别名,定义时必须初始化,绑定后不可修改;引用传参可修改实参 | int& ref = a; ref = 10; void swap(int& a, int& b) { ... } |
五、实用细节与常见问题
| 知识点 | 核心内容 | 关键提示/示例 |
|---|---|---|
| 动态内存释放 | 动态数组用delete[]释放,避免内存泄漏 | delete[] dynArr; |
| 数组边界 | C++不检查数组边界,需手动控制索引范围,避免越界访问 | 索引最大为“数组长度-1” |
| 字符串处理 | C风格字符串以'\0'结尾,需用<cstring>库函数;优先使用string类 | 避免C风格字符串的内存管理问题 |
| 常见语法错误 | 漏写;、括号不匹配、变量未声明、类型不匹配 | 编码后逐行检查基础语法规范 |
| 常见逻辑错误 | 数组越界、循环条件错误导致死循环、自增自减使用不当 | 调试时关注循环变量和数组索引变化 |
| 常见内存问题 | 动态内存忘记释放(内存泄漏)、释放后继续使用(野指针) | 申请动态内存后及时配对释放,避免重复释放 |
THE END






