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

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

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

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

4

2 回答 2

4

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

void MyFn(Type & a);

这里 & 用作“参考”修饰符。

Type * pA = &a;

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

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

ChangeValueByReference(someVariable);

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

于 2013-06-20T10:52:29.410 回答
1

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

于 2013-06-20T10:53:00.723 回答