【笔记】C++学习笔记

前言

C++是一种被广泛使用的计算机程序设计语言。它是一种通用程式设计语言,支援多重编程范式,例如过程化程序设计、面向对象程序设计、泛型程式设计和函数式程序设计等。(维基百科

编译器

编译生成可执行文件

-o <file>:指定输出的文件存放路径

1
g++ <file>.cpp

主函数

1
2
3
4
5
6
7
int main()
{

...

return 0;
}

注释

1
// 单行注释
1
/* 多行注释 */

执行操作系统命令

<command>:在当前操作系统下的命令

1
#include <iostream>
1
system("<command>");

输出语句

  • 浮点数默认会显示6位有效数字
1
#include <iostream>
1
std::cout << "" << std::endl;
  • 可以输出多组数据
1
std::cout << "" << "" << std::endl;

输入语句

1
2
数据类型 变量名;
std::cin >> 变量名;

变量

  • 标识符命名规则
    • 标识符不可以是关键字
    • 标识符只能由字母、数字、下划线组成
    • 第一个字符不能是数字
    • 标识符中区分大小写

声明变量

1
数据类型 变量名;

定义变量

1
数据类型 变量名 = 值;

变量赋值

1
变量名 = 值;

常量

定义宏常量

  • 宏常量必须在文件头部定义
  • 定义宏常量末尾不需要添加;
1
#define 常量名 值

定义const常量

1
const 数据类型 常量名 = 值;

基本数据类型

整型

类型 描述 占用空间 取值范围
short 短整型 2字节 -2^15~2^15-1
int 整型 4字节 -2^31~2^31-1
long 长整型 4字节(Windows系统、32位操作系统)、8字节(64位操作系统) -2^31~2^31-1
long long 长长整型 8字节 -2^63~2^63-1
  • 字面量为整型的数据,赋值给长整型变量时,必须不能末尾添加L,只能通过隐式类型转换得到
1
long 变量名 = 2147483647;
  • 字面量为长整型的数据,赋值给长整型变量时,推荐末尾添加L,否则会出现隐式类型转换
1
long 变量名 = 2147483648L;
  • 字面量为长长整型的数据,赋值给长长整型变量时,推荐末尾添加LL,否则会出现隐式类型转换
1
long long 变量名 = 9223372036854775807LL;

浮点型

  • 有效数字包含小数点前和小数点后的非0数字
类型 描述 占用空间 取值范围
float 单精度浮点型 4字节 7位有效数字
double 双精度浮点型 8字节 15~16位有效数字
  • 小数字面量默认为双精度浮点型数据
1
double 变量名 = 0.1;
  • 字面量为双精度浮点型的数据,赋值给单精度浮点型变量时,推荐末尾添加F,否则会出现隐式类型转换
1
float 变量名 = 0.1F;

科学计数法

  • 通过科学计数法表示浮点数
1
2
3
4
5
// 表示 3 * (10 ^ 2)
float 变量名 = 3e2;

// 表示 3 * (0.1 ^ 2)
float 变量名 = 3e-2;

字符型

类型 描述 占用空间
char 字符型 1字节
1
char 变量名 = '';

字符串型

  • C语言风格定义字符串
1
char 变量名[] = "字符串";
  • C++风格定义字符串
    • 使用字符串之前必须引入头文件
1
2
3
#include <string>

string 变量名 = "字符串";

布尔型

数据类型 标识符 占用空间
布尔型 bool 1Byte
  • 布尔型数据只有两个值
    • true:真,本质上是1
    • false:假:本质上是0
1
bool 变量名 = true;
1
bool 变量名 = false;
  • 在布尔型数据中,可以用0表示假,任何非0数据表示真,但是会出现隐式类型转换
1
bool 变量名 = 0; // false
1
bool 变量名 = 0.0; // false
1
bool 变量名 = 1; // true

获取数据占用内存空间

1
int 变量名 = sizeof(数据类型标识符);
1
int 变量名 = sizeof(变量名);

运算符

算术运算符

  • +(正号)、-(负号)
  • +(加号)、-(减号)、*/%
  • ++(自增)、--(自减)

关系运算符

  • ><>=<===!=

逻辑运算符

  • &&||!

赋值运算符

  • =+=-=*=/=%=
  • &=|=^=<<=>>=

按位运算符

  • &|^~<<>>

内存地址运算符

  • &(取地址运算符)、*(解引用运算符)

内存地址运算符

  • &(取地址运算符)、*(解引用运算符)

分支语句

if语句

1
2
3
4
if (布尔表达式)
{
布尔表达式成立时执行的代码;
}
1
2
3
4
5
6
7
8
if (布尔表达式)
{
布尔表达式成立时执行的代码;
}
else
{
布尔表达式不成立时执行的代码;
}
1
2
3
4
5
6
7
8
9
10
11
12
if (布尔表达式1)
{
布尔表达式1成立时执行的代码;
}
else if (布尔表达式2)
{
布尔表达式2成立时执行的代码;
}
else
{
以上布尔表达式都不成立时执行的代码;
}
1
2
3
4
5
6
7
if (布尔表达式1)
{
if (布尔表达式2)
{
布尔表达式12都成立时执行的代码;
}
}

switch语句

1
2
3
4
5
6
7
8
9
10
11
12
switch (变量名)
{
case1:
变量值为值1时执行的代码
break;
case2:
变量值为值2时执行的代码
break;
defautl:
变量值不为以上任何值时执行的代码
break
}

循环语句

  • 布尔表达式1表示真,返回0表示假

while 语句

1
2
3
4
while (布尔表达式)
{
布尔表达式成立时反复执行的代码;
}

do…while 语句

1
2
3
4
do
{
布尔表达式成立时反复执行的代码;
} while (布尔表达式);

for 语句

1
2
3
4
for (int i = 起始值; 布尔表达式; i++)
{
布尔表达式成立时反复执行的代码;
}

break关键字

  • 跳出循环
1
2
3
4
while (1)
{
break;
}

continue关键字

  • 结束当前循环,开始下一次循环
1
2
3
4
while (1)
{
continue;
}

三元运算

1
数据类型 变量名 = 布尔表达式 ? 布尔表达式成立时返回的结果 : 布尔表达式不成立时返回的结果;

终止程序

1
exit(0);

防止头文件重复包含

1
#pargma once

完成

参考文献

哔哩哔哩——黑马程序员