void ChangeValueByReference(int &x)
{
x = 0;
}
int main()
{
int a = 1;
ChangeValueByReference(a);
cout << a;
}
ChangeValueByReference(&a);
在 main() 中调用该函数时为什么不放?
因为在定义函数时,我们说过我们将传递一个指针void ChangeValueByReference(int &x){...}
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;
这里 & 用作“获取指针”运算符。请注意,如果您有a
type的变量Type
,则&a
返回Type *
(指向 的指针Type
)。
当您将变量传递给函数时,编译器会自动获取对变量的引用。所以你可以简单地调用:
ChangeValueByReference(someVariable);
并且编译器会知道,它必须获得对 someVariable 的引用。
我们没有说我们将传递一个指针。我们说给个参考。对变量的引用可能在内部像指针一样处理,但它不是指针。指针可以是 0 - 不是引用。