void ChangeValueByReference(int &x)
{
x = 0;
}
int main()
{
int a = 1;
ChangeValueByReference(a);
cout << a;
}
为什么我们在main()中调用该函数时不放ChangeValueByReference(&a);
?
因为在定义函数时,我们说我们将传递一个指针void ChangeValueByReference(int &x){...}
答案 0 :(得分:3)
这是因为当在不同的地方(声明/陈述)使用时,&符有两种不同的含义。
void MyFn(Type & a);
这里&amp;作为“修饰符的引用”。
Type * pA = &a;
这里&amp;用作“获取指针”运算符。请注意,如果您的变量a
类型为Type
,则&a
会返回Type *
(指向Type
的指针)。
当您将变量传递给函数时,编译器会自动获取对变量的引用。所以你可以简单地打电话:
ChangeValueByReference(someVariable);
编译器会知道,它必须得到someVariable的引用。
答案 1 :(得分:1)
我们没有说我们会传递一个指针。我们说过我们会给出一个参考。对变量的引用可能在内部像指针一样处理,但它不是指针。指针可以是0 - 不是引用。