提问人:forty4seven 提问时间:1/26/2022 更新时间:1/26/2022 访问量:376
C++ 函数调用 - 按引用传递调用指针方法/按值传递调用引用方法
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";
}
答:
2赞
Remy Lebeau
1/26/2022
#1
x
是一个变量。 正在获取 的地址,从而产生一个指针。int
&x
x
int*
f(&x)
不能将指针传递给引用,但它可以传递给指针,因此它调用:int*
int&
int*
void f(int*)
f(x)
不能将变量传递给指针,但可以传递给引用,因此它调用:int
int*
int&
void f(int&)
评论
0赞
forty4seven
1/26/2022
非常感谢,我从中学到了很多东西
评论
f(&x)
不是通过引用传递,而是使用 address-of 运算符来获取对象地址。听起来你可以用一本好的C++书