C++基础复习

1 变量和常量

  • C++规定在创建一个变量或者常量时,必须要制定出相应的数据类型,否则无法给变量分配内存
    • 常量不可修改,一旦修改便会报错(通常在变量定义前加关键字const)  
    • 宏常量不需要制定数据类型,因为其不占内存
  • 不同数据类型占用空间不同,取值范围也不同。一旦定义的变量或常量的数值超出取值范围,则输出的值出现错误
  • 数据类型存在的意义:给变量分配合适的空间

 

2 基本数据类型

 

  • 利用sizeof关键字可以统计数据类型所占内存大小
    • 语法:sizeof(数据类型or变量)

 

3 运算符

  • 两个整数相除结果仍然是整数
  • 在除法运算中,除数不能为0
  • 只有整型变量可以进行取模(取余,符号%)运算
  • 前置递增与后置递增的区别:前置递增先对变量进行++,再计算表达式;后置递增先计算表达式,后对变量进行++
  •  逻辑运算符:用于根据表达式的值返回真值或假值

 

4 程序流程结构

  • 三目运算符返回的是变量,可以继续赋值
  • switch语句中表达式类型只能是整型或者字符型
  • case里如果没有break,那么程序会一直向下执行
  • if语句比,对于多条件判断时,switch的结构清晰,执行效率高,缺点是switch不可以判断区间
  • break的使用时机:
    • 出现在switch条件语句中,作用是终止case并跳出switch
    • 出现在循环语句中,作用是跳出当前的循环语句
    • 出现在嵌套循环中,跳出最近的内层循环语句
  • continue出现在循环语句中,跳过本次循环中余下尚未执行的语句,继续进行下一循环,并没终止整个循环,而break会跳出整个循环

 

5 数组

  • 数组名属于常量,不可以赋值
  • 简单的冒泡排序:
    #include <iostream>
    using namespace std;
    
    int main()
    {
        int arr[9] = {8, 9, 4, 3, 6, 1, 0, 7, 5};
        for (int i = 0; i < 9 - 1; i++)
        {
            for (int j = 0; j < 9 - 1 - i; j++)
            {
                if (arr[j] > arr[j + 1])
                {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;
                }
            }
        }
        for (int i = 0; i < 9; i++)
        {
            cout << arr[i] << endl;
        }
        system("pause");
        return 0;
    }

 

6 函数

  • 函数定义里小括号参数列表内的参数称为形式参数,函数调用时传入的参数称为实际参数
  • 值传递
    • 函数调用时实参将数值传递给形参
    • 值传递时,形参修饰不了实参,如果形参发生改变,不会影响实参
  • 地址传递是利用指针作为函数参数,可以修改实参的值,如果想修改实参,可以利用指针进行地址传递
  • 函数的声明可以多次,但是函数的定义只能有一次

 

7 指针

  • 指针可以用来间接访问内存,可以利用指针变量保存地址
  • 解引用:指针变量通过" * "操作符,操作指针变量指向的内存空间
    int main()
    {
        int a = 10;
        int *p;
        p = &a;
        *p = 5;
        cout << &a << endl;//输出a的地址,”&“符号用来获取a的地址
        cout << p << endl;//输出指针变量p
        cout << *p << endl;//通过解引用修改a的值,并输出
        system("pause");
        return 0;
    }
  • 指针也是一种数据类型,所有指针类型在32位操作系统下是4个字节
  • 指针变量指向内存中编号为0的空间称为空指针(int *p=NULL),用来初始化指针变量,但是其指向的内存不可访问
  • 指针变量指向非法的内存空间称为野指针,也不可访问
  • const修饰指针的三种情况:
    • const修饰指针称为常量指针
    • const修饰常量称为指针常量
    • const既修饰指针,又修饰常量
      int main()
      {
          int a = 10;
          int b = 10;
          // const修饰的是指针,指针指向可以改,指针指向的值不可以更改
          const int *p1 = &a;
          p1 = &b; // 正确
          //*p1 = 100; 报错
      
          // const修饰的是常量,指针指向不可以改,指针指向的值可以更改
          int *const p2 = &a;
          // p2 = &b; //错误
          *p2 = 100; // 正确
      
          // const既修饰指针又修饰常量
          const int *const p3 = &a;
          // p3 = &b; //错误
          //*p3 = 100; //错误技巧:看const右侧紧跟着的是指针还是常量, 是指针就是常量指针,是常量就是指针常量
      
          system("pause");
          return 0;
      }
  • 当数组名传入到函数作为参数时,被退化为指向首元素的指针

 

8 结构体

  • 结构体属于用户自定义的数据类型,允许用户存储不同的数据类型
  • 结构体变量利用操作符 ''.'' 访问成员
  • 结构体指针可以通过 -> 操作符访问结构体中的成员
posted @ 2023-08-29 22:55  一杯晓  阅读(76)  评论(0)    收藏  举报