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