吴晓阳
发布于 2022-10-25 / 113 阅读
0

C++之值传递&指针传递&引用传递详解

函数基础

一个函数由以下四部分组成:

返回类型
函数名
参数(0个或多个)
函数体
其中,函数的参数叫做形参,函数执行的操作的语句块叫做函数体

值传递

#include <iostream>
 
void Swap(int a, int b)
{
    int tmp = a;
    a = b;
    b = tmp;
}
 
int main()
{
 
    int n = 0;
    int i = 1024;
 
    Swap(n, i);
    std::cout << "n: " << n << "\ni: " << i << std::endl;
 
    // 运行结果
    // n: 0
    // i: 1024
 
    return 0;
}

指针传递

#include <iostream>
 
void SwapPoniter(int *a, int *b)
{
    int tmp = *a;
    *a = *b;
    *b = tmp; // 修改了指针b指向的对象的值
    b = 0; // 只改变了函数体中的内存拷贝,实参并没有被修改
}
 
int main()
{
 
    int n = 0;
    int i = 1024;
    int *j = &n;
    int *k = &i;
 
    SwapPoniter(j, k);
    std::cout << "j: " << *j << "\nk: " << *k << std::endl;
 
    // 运行结果
    // j: 1024
    // k: 0
 
    return 0;
}

引用传递

#include <iostream>
 
void SwapQuote(int &a, int &b)
{
  int tmp = a;
  a = b;
  b = tmp;
}
 
int main()
{
 
  int n = 0;
  int i = 1024;
  
  SwapQuote(n, i);
  std::cout << "n: " << n << "\ni: " << i << std::endl;
    
  // 运行结果
  // n: 1024
  // i: 0
 
  return 0;
}