C++ Pass by Reference程序

Kev*_*ith 0 c++ pass-by-reference pass-by-value

IBM在下面的示例中解释了C++通过引用传递(包括源代码).

如果我换void swapnum...void swapnum(int i, int j),它会变成价值吗?

// pass by reference example
// author - ibm

#include <stdio.h>

void swapnum(int &i, int &j) {
  int temp = i;
  i = j;
  j = temp;
}

int main(void) {
  int a = 10;
  int b = 20;

  swapnum(a, b);
  printf("A is %d and B is %d\n", a, b);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

资源

Jon*_*onH 6

如果按值传递,则执行的任何交换仅在它们传入的函数中受影响或看不到,而不是调用代码.此外,一旦你返回主要,你会看到a和b没有交换.这就是为什么在交换你希望通过ref传递的数字时.

如果你只是问它是否会被称为是什么,那么是的,你是对的,你会通过价值.

这是一个例子:

#include <stdio.h>

void swapnum(int &i, int &j) {
  int temp = i;
  i = j;
  j = temp;
}

void swapByVal(int i, int j) {
  int temp = i;
  i = j;
  j = temp;
}

int main(void) {
  int a = 10;
  int b = 20;

  swapnum(a, b);
  printf("swapnum A is %d and B is %d\n", a, b);

  swapByVal(a, b);
  printf("swapByVal A is %d and B is %d\n", a, b);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

运行此代码,您应该看到更改仅通过引用交换持续存在,即在我们返回main之后,交换值.如果你通过值传递,你会看到调用这个函数并返回main,实际上a和b没有交换.