c ++函数调用-按引用传递调用指针方法/按值传递调用referense方法

c++ function call - pass by reference calls pointer method / pass by value calls referense method

在代码中进行了函数调用。在第一个函数调用中,通过引用传递调用指针函数。在第二个函数调用中,在调用引用函数的地方执行按值传递。

为什么会这样?

#include <iostream>
void f(int *p) { (*p)++; }
void f(int &p) { p-=10; }
int main() {
 int x=0; f(&x); f(x); f(&x);
 std::cout << x << "\n";
}

x 是一个 int 变量。 &x 正在获取 x 的地址,产生一个 int* 指针。

f(&x) 无法将 int* 指针传递给 int& 引用,但它可以传递给 int* 指针,因此它调用:

void f(int*)

f(x) 无法将 int 变量传递给 int* 指针,但它可以传递给 int& 引用,因此它调用:

void f(int&)