21xrx.com
2025-03-31 23:56:22 Monday
文章检索 我的文章 写文章
C++中传值的三种方式
2023-07-08 21:42:01 深夜i     10     0
C++ 传值 三种方式

在C++中,参数的传递有三种方式:值传递、指针传递和引用传递。每种方式都有其适用的场景,下面依次进行介绍。

1. 值传递(Call by value)

值传递是指将实参的值复制一份给形参。函数中的修改不会影响到原来的实参,因为它们在不同的内存地址中。

示例代码:

#include <iostream>
using namespace std;
void func(int a) {
  a++;
  cout << "In func: " << a << endl;
}
int main() {
  int num = 10;
  func(num);
  cout << "In main: " << num << endl;
}

输出结果:

In func: 11
In main: 10

2. 指针传递(Call by pointer)

指针传递是指将实参的地址传递给形参,可以在函数中修改传递地址所指的值。通过指针传递可以实现函数间数据共享。

示例代码:

#include <iostream>
using namespace std;
void func(int* p) {
  (*p)++;
  cout << "In func: " << *p << endl;
}
int main() {
  int num = 10;
  int* p = &num;
  func(p);
  cout << "In main: " << num << endl;
}

输出结果:

In func: 11
In main: 11

3. 引用传递(Call by reference)

引用传递是指将实参的别名传递给形参。函数中的修改会直接影响到原来的实参,因为它们是同一个变量。

示例代码:

#include <iostream>
using namespace std;
void func(int& a) {
  a++;
  cout << "In func: " << a << endl;
}
int main() {
  int num = 10;
  func(num);
  cout << "In main: " << num << endl;
}

输出结果:

In func: 11
In main: 11

综上所述,值传递、指针传递和引用传递各有优缺点,具体使用时需要根据实际情况进行选择。值传递可以避免函数间数据干扰,指针传递可以实现函数间数据共享,引用传递可以方便地访问和修改原始数据。

  
  

评论区