从0开始学C++ 第八课:指针与引用

第八课:指针与引用

学习目标:

  • 了解指针的概念及其在C++中的作用。
  • 学习如何声明指针,以及如何使用指针访问和修改内存地址中的数据。
  • 掌握引用的概念,理解引用与指针的区别。
  • 学习如何使用指针和引用传递函数参数,以及这样做的优势。

学习内容:

  1. 指针的概念
    指针是一个变量,其值为另一个变量的内存地址。通过指针,可以从远程位置访问和修改变量的值。

  2. 使用指针

    • 代码示例:
      #include 
      using namespace std;
      
      int main() {
          int var = 20;   // 实际变量声明
          int *ip;        // 指针变量声明
      
          ip = &var;      // 在指针变量中存储 var 的地址
      
          cout << "Value of var variable: ";
          cout << var << endl;
      
          // 输出在指针变量中存储的地址
          cout << "Address stored in ip variable: ";
          cout << ip << endl;
      
          // 访问指针中地址的值
          cout << "Value of *ip variable: ";
          cout << *ip << endl;
      
          return 0;
      }
      
    • 预计输出效果:
      Value of var variable: 20
      Address stored in ip variable: [var的地址]
      Value of *ip variable: 20
      
    • 使用场景:
      指针在数组、动态内存管理、函数参数传递等场景中非常有用,尤其是在需要直接访问内存或者优化性能时。
  3. 引用的概念

    • 概念讲解:
      引用是一个变量的别名,它是另一个变量的引用名。引用必须在声明时就被初始化,并且一旦被初始化后,就不能改变引用的关联。
  4. 使用引用

    • 代码示例:
      #include 
      using namespace std;
      
      int main() {
          int i = 3;
          int& r = i; // 声明引用 r
      
          cout << "Value of i: " << i << endl;
          cout << "Value of i reference: " << r << endl;
      
          r = 5; // 修改引用变量的值
      
          cout << "Value of i: " << i << endl;
          cout << "Value of i reference: " << r << endl;
      
          return 0;
      }
      
    • 预计输出效果:
      Value of i: 3
      Value of i reference: 3
      Value of i: 5
      Value of i reference: 5
      
    • 使用场景:
      引用通常用于函数参数传递,确保对实参的直接操作,以及用于返回多个值。

练习题:
编写一个函数 swap,它交换两个整数的值。这个函数应该使用指针来直接修改传入的变量的值。

练习答案:

#include 
using namespace std;

// 函数声明
void swap(int *x, int *y);

// 主函数
int main() {
    int a = 100;
    int b = 200;

    cout << "Before swap, value of a: " << a << endl;
    cout << "Before swap, value of b: " << b << endl;

    swap(&a, &b); // 使用指针传递地址

    cout << "After swap, value of a: " << a << endl;
    cout << "After swap, value of b: " << b << endl;

    return 0;
}

// 函数定义
void swap(int *x, int *y) {
    int temp;
    temp = *x; // 保存地址 x 的值
    *x = *y;    // 把 y 赋值给 x
    *y = temp; // 把 x 赋值给 y
}

// 预计输出:
// Before swap, value of a: 100
// Before swap, value of b: 200
// After swap, value of a: 200
// After swap, value of b: 100

在这个练习中,swap 函数利用指针直接修改了传递给它的两个参数的值。通过使用指针,我们可以在不返回任何值的情况下,改变传入的参数本身的值。

目录
第九课:数组与字符串

你可能感兴趣的:(从0开始学C++,C++,c++,开发语言,算法)