[英]why when a function takes a pointer, then we pass the address of a specific variable, and not a pointer?
[英]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.