# 🎮 编程基础

# 1. 数据类型和关键字

数据类型

数据类型 关键字 取值 字节
整型 int 232-2^{32} ~ 23212^{32} - 1 4
字符型 char 11 ~ 127127 1
布尔型 bool true / false 1
实型 float 4
double 8

关键字:关键字是 C++ 中预先保留的单词(标识符)。C++关键字如下:

asm do if return
auto double inline short
bool dynamic_cast int signed
break else long sizeof
case enum mutable static
catch explicit namespace static_cast
char export new struct
class extern operator switch
const false private template
const_cast float protected this
continue for public throw
default friend register true
delete goto reinterpret_cast try

提示

在给变量或者常量起名称时候,不要用C++得关键字,否则会产生歧义。

# 2. 常量和变量

2.1 常量:用于记录程序中不可更改的数据

语法

  • 宏常量: #define 常量名 常量值 // 宏常量
  • const常量: const 数据类型 常量名 = 常量值

示例:

// 1、宏常量
#define day 7

int example() {
	cout << "一周里总共有 " << day << " 天" << endl;
	day = 8;  //报错,宏常量不可以修改

	//2、const修饰变量
	const int month = 12;
	cout << "一年里总共有 " << month << " 个月份" << endl;
	month = 24; //报错,常量是不可以修改的
}
1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12

2.2 变量:给一段指定的内存空间起名,方便操作这段内存

语法数据类型 变量名 = 变量值 // 变量名由字母、数字和下划线组成,且开头只能是字母或下划线

示例:

#include<iostream>
using namespace std;
int example() {
	//变量的定义
	//语法:数据类型  变量名 = 初始值
	int a = 10;
	cout << "a = " << a << endl;  // out: a = 10
}
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8

2.3 标识符命名规则

作用C++ 规定给标识符(变量、常量)命名时,有一套自己的规则

  • 标识符不能是关键字
  • 标识符只能由字母、数字、下划线组成
  • 第一个字符必须为字母或下划线
  • 标识符中字母区分大小写

建议

给标识符命名时,争取做到见名知意的效果,方便自己和他人的阅读

# 3. 运算符

3.1 算术运算符

作用:用于处理四则运算,算术运算符包括以下符号:

运算符 术语 示例 结果
+ 正号 +3 3
- 负号 -3 -3
+ 10 + 5 15
- 10 - 5 5
* 10 * 5 50
/ 10 / 5 2
% 取模(取余) 10 % 3 1
++ 前置递增 a=2; b=++a; a=3; b=3;
++ 后置递增 a=2; b=a++; a=3; b=2;
-- 前置递减 a=2; b=--a; a=1; b=1;
-- 后置递减 a=2; b=a--; a=1; b=2;

3.2 赋值运算符

作用:用于将表达式的值赋给变量,赋值运算符包括以下几个符号:

运算符 术语 示例 结果
= 赋值 a=2; b=3; a=2; b=3;
+= 加等于 a=0; a+=2; a=2;
-= 减等于 a=5; a-=3; a=2;
*= 乘等于 a=2; a*=2; a=4;
/= 除等于 a=4; a/=2; a=2;
%= 模等于 a=3; a%2; a=1;

3.3 比较运算符

作用:用于表达式的比较,并返回一个真值或假值,比较运算符有以下符号:

运算符 术语 示例 结果
== 相等于 4 == 3 0
!= 不等于 4 != 3 1
< 小于 4 < 3 0
> 大于 4 > 3 1
<= 小于等于 4 <= 3 0
>= 大于等于 4 >= 1 1

3.4 逻辑运算符

作用:用于根据表达式的值返回真值或假值,逻辑运算符有以下符号:

运算符 术语 示例 结果
! !a 如果 a 为假,则 !a 为真; 如果 a 为真,则 !a 为假。
&& a&&b 如果 ab 都为真,则结果为真,否则为假。
|| a||b 如果 ab 有一个为真,则结果为真,二者都为假时,结果为假。

# 4. 程序流程结构

  // 1.判断结构
  if(表达式) {
    ...
  } else if(表达式) {
    ...
  } else {
    ...
  }

  // 1.2 三目运算符
  int max = a > b ? a : b;

  // 2.当结构
  while (表达式) {
    ...
  }

  // 3.直到结构
  do {
    ...
  } while (表达式);

  // 4.选择结构
  switch(变量) {
    case 变量值1:
      break;
    case 变量值2:
      ...
    default:
      ...
  }

  // 5.for循环
  for (int i = 0; i < 10; i ++)
  {
    ...
  }

  // 6.跳转语句
  break;
  continue;
  goto;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

# 5. 数组

# 6. 函数

  • 函数的定义

  • 函数的调用

  • 形参和实参

  • 值传递和地址传递

  • 函数提高-默认参数


     





















      // 函数中变量f默认为false
      int add(int a, int b, bool f = false) {
        if (f) {
          return a - b;
        } else {
          return a + b;
        }
      }
      ...
      add(1, 2);        // 1 + 2
      add(1, 2, true);  // 1 - 2
    
      /*
        Notes:
        1.如果某个位置设置了默认参数,那么在这个位置的右侧参数就必须也设置默认值
        2.如果函数声明有默认参数,函数实现就不能有默认参数(声明和实现只能在其中一个中设置默认参数)
      */
      int func(int a = 10, int b = 10); // 函数声明设置默认参数
      // 函数实现设置默认参数
      int func(int a = 10, int b = 10) {
        return a + b;
      }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22

# 7. 指针

  • 常量指针 const int *p; 指针的指向可以改,但指针指向的值不可以改
  • 指针常量 int * const p; 指针指向的值可以改,但指针的指向不可以改
  • const int * const p; 都不可以改

# 8. 结构体

  • 三种赋值方式
struct Student{
  char name[10];  // 名字
  int age;        // 年龄
  int id;         // 校园号
} s1; // 第一种,在结构体定义后添加变量名,此处为s1

// 第二种,先创建变量,再赋值
struct Student s2;
s2.age = 10;

// 第三种,在创建时使用中括号赋值
struct Student s3 = {"张三", 15, 12431};
1
2
3
4
5
6
7
8
9
10
11
12
1
2
3
4
5
6
7
8
9
10
11
12
  • 结构体中const的使用场景:使用const来防止误操作