繁体   English   中英

当我们通过引用传递时,为什么在调用函数时我们放置一个变量而不是地址(指针)?

[英]When we pass by reference, why do we put a variable instead of address(pointer), when calling the function?

void ChangeValueByReference(int &x)
{
    x = 0;
}

int main()
{
    int a = 1;
    ChangeValueByReference(a);
    cout << a;
}

为什么我们不把ChangeValueByReference(&a); 在main()中调用该函数时?

因为在定义函数时,我们说我们将传递指针void ChangeValueByReference(int &x){...}

那是因为当在不同的地方(声明/声明)使用时,&符有两种不同的含义。

void MyFn(Type & a);

这里&作为“对”修饰符的引用。

Type * pA = &a;

这里&充当“获取指针”运算符。 请注意,如果您有类型为Type变量a ,则&a返回Type * (指向Type的指针)。

当您将变量传递给函数时,编译器会自动获取对变量的引用。 所以你可以简单地打电话:

ChangeValueByReference(someVariable);

编译器会知道,它必须获得someVariable的引用。

我们没有说我们会传递一个指针。 我们说过我们会给出一个参考。 对变量的引用可能在内部像指针一样处理, 它不是指针。 指针可以是0 - 不是引用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM