卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章79808本站已运行4416

C++ 函数中引用和指针传递示例讲解

在 c++++ 中,函数参数可以按值、引用或指针传递。按值传递仅复制变量的值,按引用传递直接修改原始变量,而按指针传递则通过内存地址修改原始变量。

C++ 函数中引用和指针传递示例讲解

C++ 函数中引用和指针传递示例讲解

什么是引用和指针?

  • 引用:引用就像一个变量的别名,指向变量存储的内存地址。
  • 指针:指针是一个变量,存储另一个变量的内存地址。

引用和指针传递

立即学习“C++免费学习笔记(深入)”;

在 C++ 函数中,可以根据需要传递值、引用或指针。

  • 按值传递:将变量的值复制到函数的参数中。
  • 按引用传递:将变量的引用传递到函数的参数中。
  • 按指针传递:将变量的指针传递到函数的参数中。

按值传递

void swap(int a, int b) {
  // 交换 a 和 b 的值
  int temp = a;
  a = b;
  b = temp;
}

在这个示例中,a 和 b 按值传递,即它们的值被复制到函数的参数 a 和 b 中。因此,函数内的任何更改都不会影响函数外的原始变量。

按引用传递

void swap(int& a, int& b) {
  // 交换 a 和 b 的值
  int temp = a;
  a = b;
  b = temp;
}

在这个示例中,a 和 b 按引用传递,即它们在函数内部直接修改原始变量。因此,函数内对 a 和 b 的任何更改都会反映在函数外的原始变量上。

按指针传递

void swap(int* a, int* b) {
  // 交换 a 和 b 的值
  int temp = *a;
  *a = *b;
  *b = temp;
}

在这个示例中,a 和 b 按指针传递,即它们指向原始变量的内存地址。因此,函数内对 *a 和 *b 的任何更改都会反映在函数外的原始变量上。

实战案例

计算两个整数的最大公约数的函数:

// 按值传递
int gcd(int a, int b) {
  while (b != 0) {
    int temp = b;
    b = a % b;
    a = temp;
  }
  return a;
}

// 按引用传递
int gcd(int& a, int& b) {
  while (b != 0) {
    int temp = b;
    b = a % b;
    a = temp;
  }
  return a;
}

// 按指针传递
int gcd(int* a, int* b) {
  while (*b != 0) {
    int temp = *b;
    *b = *a % *b;
    *a = temp;
  }
  return *a;
}
卓越飞翔博客
上一篇: C++ 函数重载的效率问题如何解决?
下一篇: C++ 函数重载与函数模板的区别
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏