Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/140.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++中引用调用_C++ - Fatal编程技术网

C++中引用调用

C++中引用调用,c++,C++,以这个例子为例 int value(int &a) { int z; z=a; return z; } 我的问题是为什么它返回a的值而不是地址,因为&a指的是它的地址而不是值。它应该将参数的地址分配给z并返回相同的值 int value(int &a) 这是接受参数作为引用的语法,即传递到此函数的参数的别名,而不是该变量的地址 如果要接受传递参数的地址,则应使用:- int value(int *a) << This would st

以这个例子为例

int value(int &a)
{
    int z;

    z=a;

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

int value(int &a)
这是接受参数作为引用的语法,即传递到此函数的参数的别名,而不是该变量的地址

如果要接受传递参数的地址,则应使用:-

int value(int *a)  << This would store the address of passed argument.
<>符号在C++中具有多重含义。在本文中,声明&并不意味着地址,它意味着引用。它充当传入变量的别名,因此更改别名会更改变量本身

这是完全不同的,尽管在某些方面类似于声明一个指向保存其地址的变量的指针,该变量的地址也是使用运算符&

因此,这一切都是关于上下文或如何使用&的:

声明:

接线员:


它返回一个值,因为这就是int返回类型的含义。和&a不是地址。对变量的引用类似于变量的新名称。它包含变量而不是地址的值。@AliMofrad我宁愿说引用包含地址,但计算结果是该地址下的值。请看下面的答案:。有时候,在讨论类类型时,最好检查这种类型,而不是像int这样的简单类型,我觉得这会混淆问题,因为它的大小和性能方面的琐碎性。对不起。。。错过了上面的编辑时间窗口@Ghulam-使用结构或类类型再次尝试您的示例,看看您遇到了什么问题。它们可能有助于澄清一些事情。你的最后一句话可能会让那些对概念有困难的人感到困惑:你没有得到传递参数的地址,但传递参数必须是某个对象的地址。如果需要传递参数的地址,则必须通过ref接受它,然后在函数中获取地址。
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)