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)
int& calDouble(int x)不返回地址,而是返回对int.
您需要获取引用的地址才能将其分配给指针。
但请注意,您的代码会调用未定义的行为。由于您按值传递参数,因此会在函数内部创建它的副本。所以你通过引用返回一个局部变量,这是不合法的。
我认为你的困惑来自于&。这可以通过两种方式使用:
&x,它获取它的地址int& x,它定义了一个引用引用只是一个别名,是变量的不同名称。
int x = 0;
int& y = x;
Run Code Online (Sandbox Code Playgroud)
现在,x并y引用相同的变量。
int* z = &x;
Run Code Online (Sandbox Code Playgroud)
取 的地址x。
| 归档时间: |
|
| 查看次数: |
473 次 |
| 最近记录: |