在C++中通过引用调用

Calling by reference in C++

本文关键字:引用 调用 C++      更新时间:2023-10-16

考虑这个例子

int value(int &a)
{
    int z;
    z=a;
    return z;
}

我的问题是为什么它返回 a 而不是地址的值,因为 &a 指的是它的地址,而不是 value.it 应该将参数的地址分配给 z 并返回相同的地址。

&符号在C++中具有多种含义。在此上下文中(声明)&并不意味着它的地址意味着引用。它充当传入变量的别名,因此更改别名会更改变量本身。

这与声明指向变量的指针完全不同(尽管在某些方面相似),该变量保存其地址,该变量使用运算符的地址(也&)获取。

因此,这一切都与上下文或如何使用&有关:

声明:

int& i = n; // i is an int reference to n (& means reference)

算子:

int* i = &n; // i is an int pointer to n (& means address of)
int value(int &a)

这是接受参数作为引用的语法,即传递给此函数的参数的别名,而不是该变量的地址。

如果你想接受传递的参数的地址,那么你应该使用:-

int value(int *a)  << This would store the address of passed argument.