【发布时间】:2020-03-01 04:02:21
【问题描述】:
第一个代码:
int a = 1;
void func(int* ptr) {
ptr = &a;
}
int main() {
int nvar = 2;
int* pvar = &nvar;
func(pvar);
std::cout << *pvar;
}
//Output: 2
第二个代码:
int a = 1;
void func(int*& ptr) {
ptr = &a;
}
int main() {
int nvar = 2;
int* pvar = &nvar;
func(pvar);
std::cout << *pvar;
}
//Output: 1
唯一的区别是 'func' 函数中的 '&' 字符。但是有人可以解释一下,在这种情况下它会做什么?
【问题讨论】:
-
听起来你可以使用good C++ book
-
您认为
&运算符的作用是什么?我想你有它的目的? -
我知道它的作用,但是在第二个代码中它与 * 组合在一起,我不知道这种组合意味着什么
-
首先,
ptr是按值传递的,所以函数返回后调用者看不到赋值给它的效果。在第二个中,ptr通过引用传递(由于&),因此在函数返回后调用者可以看到赋值的效果。
标签: c++ pointers reference dereference