大学时学习的第一门编程语言就是C,实际开发时C++的使用还是较多的,基本上前三年均以Cpp为主。
无奈读研和工作后就从未再接触过C和CPP了,目前公司产品需要,再回头拾起Cpp的知识吧,复习为主,只摘录重点。
参考教程
C++教程:https://www.runoob.com/cplusplus/cpp-environment-setup.html
C++ 教程:https://www.runoob.com/cplusplus/cpp-tutorial.html
STL完整版整理:https://zsweety.blog.csdn.net/article/details/70568499
C++ 环境设置
1 | g++ -v |
C++ 注释
https://www.runoob.com/cplusplus/cpp-comments.html
可以使用 #if 0 … #endif 来实现注释,且可以实现嵌套,格式为:
1 | #if 0 |
你可以把 #if 0 改成 #if 1 来执行 code 的代码。
这种形式对程序调试也可以帮助,测试时使用 #if 1 来执行测试代码,发布后使用 #if 0 来屏蔽测试代码。
#if 后可以是任意的条件语句。
C++ 数据类型
https://www.runoob.com/cplusplus/cpp-data-types.html
布尔型 bool
字符型 char
整型 int
浮点型 float
双浮点型 double
无类型 void
宽字符型 wchar_t
一些基本类型可以使用一个或多个类型修饰符进行修饰:
signed
unsigned
short
long
typedef 声明
枚举类型
C++ 变量作用域
https://www.runoob.com/cplusplus/cpp-variable-scope.html
当局部变量被定义时,系统不会对其初始化,您必须自行对其初始化。定义全局变量时,系统会自动初始化为下列值:
数据类型 初始化默认值
int 0
char ‘\0’
float 0
double 0
pointer NULL
正确地初始化变量是一个良好的编程习惯,否则有时候程序可能会产生意想不到的结果。
C++ 常量
https://www.runoob.com/cplusplus/cpp-constants-literals.html
整数常量可以是十进制、八进制或十六进制的常量。前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制。
整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。
浮点常量由整数部分、小数点、小数部分和指数部分组成。您可以使用小数形式或者指数形式来表示浮点常量。
当使用小数形式表示时,必须包含整数部分、小数部分,或同时包含两者。当使用指数形式表示时, 必须包含小数点、指数,或同时包含两者。带符号的指数是用 e 或 E 引入的。
布尔常量
字符常量
定义常量
在 C++ 中,有两种简单的定义常量的方式:
使用 #define 预处理器。
使用 const 关键字。
C++ 修饰符类型
https://www.runoob.com/cplusplus/cpp-modifier-types.html
修饰符 signed、unsigned、long 和 short 可应用于整型,signed 和 unsigned 可应用于字符型,long 可应用于双精度型。
修饰符 signed 和 unsigned 也可以作为 long 或 short 修饰符的前缀。例如:unsigned long int。
1 | short int i; // 有符号短整数 |
C++ 中的类型限定符
const
volatile
restrict
C++ 存储类
https://www.runoob.com/cplusplus/cpp-storage-classes.html
auto 存储类
register 存储类
static 存储类
extern 存储类
mutable 存储类
thread_local 存储类
C++ 运算符
https://www.runoob.com/cplusplus/cpp-operators.html
算术运算符
关系运算符
逻辑运算符
位运算符
赋值运算符
杂项运算符
C++ 中的运算符优先级
C++ 循环
https://www.runoob.com/cplusplus/cpp-loops.html
循环类型
while 循环 当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。
for 循环 多次执行一个语句序列,简化管理循环变量的代码。
do…while 循环 除了它是在循环主体结尾测试条件外,其他与 while 语句类似。
循环控制语句
break 语句 终止 loop 或 switch 语句,程序流将继续执行紧接着 loop 或 switch 的下一条语句。
continue 语句 引起循环跳过主体的剩余部分,立即重新开始测试条件。
goto 语句 将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句。
C++ 判断
https://www.runoob.com/cplusplus/cpp-decision.html
if 语句 一个 if 语句 由一个布尔表达式后跟一个或多个语句组成。
if…else 语句 一个 if 语句 后可跟一个可选的 else 语句,else 语句在布尔表达式为假时执行。
switch 语句 一个 switch 语句允许测试一个变量等于多个值时的情况。
? : 运算符
C++ 函数
https://www.runoob.com/cplusplus/cpp-functions.html
函数声明
int max(int num1, int num2);
函数参数
传值调用 该方法把参数的实际值赋值给函数的形式参数。在这种情况下,修改函数内的形式参数对实际参数没有影响。
指针调用 该方法把参数的地址赋值给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。
引用调用 该方法把参数的引用赋值给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。
参数的默认值
当您定义一个函数,您可以为参数列表中后边的每一个参数指定默认值。当调用函数时,如果实际参数的值留空,则使用这个默认值。
Lambda 函数与表达式
C++ 数字
https://www.runoob.com/cplusplus/cpp-numbers.html
1 | // 设置种子 |
C++ 数组
https://www.runoob.com/cplusplus/cpp-arrays.html
double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};
double salary = balance[9];
C++ 字符串
https://www.runoob.com/cplusplus/cpp-strings.html
C++ 引用
https://www.runoob.com/cplusplus/cpp-references.html
C++ 引用 vs 指针
引用很容易与指针混淆,它们之间有三个主要的不同:
不存在空引用。引用必须连接到一块合法的内存。
一旦引用被初始化为一个对象,就不能被指向到另一个对象。指针可以在任何时候指向到另一个对象。
引用必须在创建时被初始化。指针可以在任何时间被初始化。
C++ 基本的输入输出
https://www.runoob.com/cplusplus/cpp-basic-input-output.html
无法区分 cout、cerr 和 clog 的差异,但在编写和执行大型程序时,它们之间的差异就变得非常明显。所以良好的编程实践告诉我们,使用 cerr 流来显示错误消息,而其他的日志消息则使用 clog 流来输出。
C++ 数据结构
https://www.runoob.com/cplusplus/cpp-data-structures.html
指向结构的指针
为了使用指向该结构的指针访问结构的成员,您必须使用 -> 运算符,如下所示:
struct_pointer->title;