Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.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++ 引用在cpp中的含义是什么_C++_Reference - Fatal编程技术网

C++ 引用在cpp中的含义是什么

C++ 引用在cpp中的含义是什么,c++,reference,C++,Reference,我对以下代码的输出感到困惑 #include <iostream> using namespace std; int main() { int i; double d; int r=i; double s=d; i=5; cout<<"value of i:"<<i<<endl; cout<<"value of i reference:"<<r<<endl; d=11.7; cout<<"

我对以下代码的输出感到困惑

#include <iostream>

using namespace std;

int main()

{
int i;
double d;

int r=i;
double s=d;

i=5;
cout<<"value of i:"<<i<<endl;
cout<<"value of i reference:"<<r<<endl;

d=11.7;
cout<<"value of d:"<<d<<endl;
cout<<"value of d reference:"<<s<<endl;

cin.ignore();
return 0;

}
结果如下 i的价值:5 i参考值:4370436 d值:11.7 d参考值:1.78734e-307


我不知道为什么I和d的值是这样的。我知道,如果我在I和d引用的定义中添加&的话,它将作为引用使用。但是我想我不完全理解引用的含义。有人能解释一下为什么在这段代码中输出是这样的吗。非常感谢

代码中没有引用

r和s有一个未指定的值,因为未初始化的i和d在执行副本初始化时也进行了初始化。关键是拷贝初始化只是:拷贝

例如,r是一个新的、独立的、不相关的整数,在初始化时,它的值为i。就这样!r不跟随i值的变化


你似乎至少部分地理解了,正如你矛盾的陈述,我知道,如果我在I和d引用的定义中添加,那么它将起到引用的作用,至少表明你知道&与引用相关。事实上,使用int/double而不是int&/double&类型意味着您的对象目前根本不是引用。

正如@Lightness Races In Orbit解释的输出,您在初始化i之前将i的值复制到r。在main函数中声明i之后,它有一个垃圾值,您将该垃圾值分配给r

我已编辑了您的代码并添加了引用以解释引用:

#include <iostream>

using namespace std;

int main()

{
int i;

int &r=i;

i=5;
cout<<"value of i:"<<i<<endl;
cout<<"value of i reference:"<<r<<endl;
r = 6; // See this
cout<<"value of i:"<<i<<endl;// Value of i also becomes 6
i = 9;
cout<<"value of i reference:"<<r<<endl;// Value of r also becomes 9

cin.ignore();
return 0;

}

这里,r是对i的引用。r和i都指向同一个变量。这就像一个人有两个名字一样。如果您对其中任何一个执行某些操作,更改也会反映到另一个。看到R和I.P/>值的变化,你使用哪一本C++书?@亮度在轨道上跑,我在跟随你的需要,读一本好的C++书。不是在线教程。@Lightness Races in Orbit,谢谢,有什么建议吗?接下来的问题是:为什么它显示了i reference:4370436的价值?4370436只是一个随机数,还是与int i有关?@jchuworklikeabich:我已经说过了。这是一个未指定的值,因为您没有初始化i。有很多资源可以向您解释这一点。我强烈建议您在询问之前进行一些研究!对不起,我没有看到最后一段。谢谢你们两位的解释。我想我现在更好地理解了这些概念。
value of i:5
value of i reference:5
value of i:6
value of i reference:9