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&)
在代码中进行了函数调用。在第一个函数调用中,通过引用传递调用指针函数。在第二个函数调用中,在调用引用函数的地方执行按值传递。
为什么会这样?
#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&)