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

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

提问人:forty4seven 提问时间:1/26/2022 更新时间:1/26/2022 访问量:376

问:

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

为什么会这样?

#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";
}
C++ 函数 按引用传递

评论

3赞 NathanOliver 1/26/2022
f(&x)不是通过引用传递,而是使用 address-of 运算符来获取对象地址。听起来你可以用一本好的C++书

答:

2赞 Remy Lebeau 1/26/2022 #1

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

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

void f(int*)

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

void f(int&)

评论

0赞 forty4seven 1/26/2022
非常感谢,我从中学到了很多东西