考虑示例
int value(int &a)
{
int z;
z=a;
return z;
}
我的问题是为什么它返回a而不是地址的值,因为& a引用它的地址而不是value.it应该将参数的地址分配给z并返回相同的地址。
答案 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)