C++教程 学习笔记
大家好!我要学习C++语言,目前主要是看 菜鸟教程。其中这篇文章选取了 C++教程 的部分重点内容,后面会继续更新 C++面向对象、C++高级教程、C++资源库 的学习笔记。
1、概念
1.1 g++应用说明
- 程序 g++ 是将 gcc 默认语言设为 C++ 的一个特殊的版本,链接时它自动使用 C++ 标准库 而不用 C 标准库。
1.2 变量作用域
- 局部变量:在函数或一个代码块内部声明的变量。定义时需要自行对其初始化。
- 形式参数:在函数参数的定义中声明的变量。
- 全局变量:在所有函数外部声明的变量。定义时系统自动初始化。
2、语法
2.1 typedef 声明
- 作用:使用 typedef 为一个已有的类型取一个新的名字。
- 举例:
typedef longlong ll;
2.2 定义常量
- 使用 #define 预处理器。
#define identifier value
- 使用 const 关键字。
const type variable = value;
2.3 C++ 存储类
类型 | 说明 |
---|
auto | 声明变量时根据初始化表达式自动推断该变量的类型、声明函数时函数返回值的占位符。 |
register | 只用于需要快速访问的变量,比如计数器。用于定义存储在寄存器中而不是 RAM 中的局部变量。这意味着变量的最大尺寸等于寄存器的大小(通常是一个词),且不能对它应用一元的 ‘&’ 运算符(因为它没有内存位置)。 |
static | 在函数调用之间保持局部变量的值。static 修饰符也可以应用于全局变量。当 static 修饰全局变量时,会使变量的作用域限制在声明它的文件内。 |
extern | 用于提供一个全局变量的引用,全局变量对所有的程序文件都是可见的。 |
mutable | 仅适用于类的对象 |
thread_local (C++11) | 声明的变量仅可在它在其上创建的线程上访问。 变量在创建线程时创建,并在销毁线程时销毁。 每个线程都有其自己的变量副本。 |
- 从 C++ 17 开始,
auto 关键字不再是 C++ 存储类说明符,且 register 关键字被弃用。
2.4 杂项运算符
运算符 | 描述 |
---|
sizeof | sizeof 运算符返回变量的大小。例如,sizeof(a) 将返回 4,其中 a 是整数。 |
Condition ? X : Y | 条件运算符。如果 Condition 为真 ? 则值为 X : 否则值为 Y。 |
, | 逗号运算符会顺序执行一系列运算。整个逗号表达式的值是以逗号分隔的列表中的最后一个表达式的值。 |
.(点)和 ->(箭头) | 成员运算符用于引用类、结构和共用体的成员。 |
Cast | 强制转换运算符把一种数据类型转换为另一种数据类型。例如,int(2.2000) 将返回 2。 |
& | 指针运算符 & 返回变量的地址。例如 &a; 将给出变量的实际地址。 |
* | 指针运算符 * 指向一个变量。例如,*var; 将指向变量 var。 |
2.5 函数
- 定义函数
return_type function_name( parameter list )
{
body of the function;
}
- 函数声明
return_type function_name( parameter list );
如:int max(int num1, int num2); 或
int max(int, int);
- 函数参数
调用类型 | 描述 |
---|
传值调用 | 该方法把参数的实际值复制给函数的形式参数。在这种情况下,修改函数内的形式参数对实际参数没有影响。 |
指针调用 | 该方法把参数的地址复制给形式参数。在函数内,该地址用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。 |
引用调用 | 该方法把参数的引用复制给形式参数。在函数内,该引用用于访问调用中要用到的实际参数。这意味着,修改形式参数会影响实际参数。 |
- 默认情况下,C++ 使用传值调用来传递参数。一般来说,这意味着函数内的代码不能改变用于调用函数的参数。
2.6 引用
概念 | 描述 |
---|
把引用作为参数 | C++ 支持把引用作为参数传给函数,这比传一般的参数更安全。 |
把引用作为返回值 | 可以从 C++ 函数中返回引用,就像返回其他数据类型一样。 |
2.7 结构体
- 定义
struct type_name {
member_type1 member_name1;
member_type2 member_name2;
member_type3 member_name3;
. .
} object_names;
- 使用成员访问运算符
.
访问结构成员 - 结构作为函数参数
- 指向结构体的指针
3、其它,未完待续
- 无限循环的表示:
for(;;)