C++有关引用运算符返回类型的基本概念

dev*_*per 8 c++ reference function operator-keyword

我需要清除一个基本概念.这段代码工作正常.有人可以解释一下,如果函数calDouble已经返回int的地址(引用),为什么我需要在main int*j =&calDouble(i)中进一步使用&运算符; 获取int的地址(引用)?谢谢.

int& calDouble(int x)
{
    x = x*2;
    return x;

}

int main(int argc, char *argv[])
{
    int i = 99;
    int *j = &calDouble(i);

    system("PAUSE");
    return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)

Luc*_*ore 3

int& calDouble(int x)不返回地址,而是返回对int.

您需要获取引用的地址才能将其分配给指针。

但请注意,您的代码会调用未定义的行为。由于您按值传递参数,因此会在函数内部创建它的副本。所以你通过引用返回一个局部变量,这是不合法的。

我认为你的困惑来自于&。这可以通过两种方式使用:

  • 应用于变量&x,它获取它的地址
  • 当在声明中时int& x,它定义了一个引用

引用只是一个别名,是变量的不同名称。

int x = 0;
int& y = x;
Run Code Online (Sandbox Code Playgroud)

现在,xy引用相同的变量。

int* z = &x;
Run Code Online (Sandbox Code Playgroud)

取 的地址x