C++ 基本语法核心知识点速记表

一、基础结构

知识点核心内容关键示例代码片段
程序入口所有程序从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 返回值; };无返回值用voidvoid 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 = &num; *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
喜欢就支持一下吧
赞赏 分享