在C ++中通过引用调用

时间:2014-11-22 08:39:50

标签: c++

考虑示例

int value(int &a)
{
    int z;

    z=a;

    return z;
}

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

2 个答案:

答案 0 :(得分:0)

int value(int &a)

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

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

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

答案 1 :(得分:0)

&符号在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)