C++ 为什么引用值会改变以前的值?
C++ Why do reference values change previous values?
有人可以帮我解决这个问题吗?我认为输出将是 20 10 20(按照 ref1、num1、num2 的顺序)。为什么输出20 20 20? ref1 改变也会改变 num1?参考值对我来说是一个新概念,所以如果这是一个愚蠢的问题,我很抱歉。我知道你们更喜欢指针值,但在 class 这就是我们正在学习的内容,所以我想把它记下来。谢谢!
#include <iostream>
int main()
{
int num1 = 10;
int num2 = 20;
int &ref1 = num1;
ref1 = num2;
std::cout << "Ref1: " << ref1 << std::endl
<< "Num1: " << num1 << std::endl
<< "Num2: " << num2 << std::endl;
}
Why does it output 20 20 20
ref1 是对 num1 的引用,因此当您将 ref1 赋值为 num2 其实你把num1赋值给了num2,这就是引用的目的
所以就像你这样做一样
int * ref1 = &num1;
*ref1 = num2;
how do I find out their memory values/addresses
ref1右边(printf中的情况)给出了num1[=31的值=],要获得引用元素的地址而不是像往常一样使用其值 &,所以 &ref1 值 &num1。注意你不能重新分配一个引用,你只能初始化它们
你可以理解为引用变量是别名,即现有变量的别名
因此 ref1 num1 的另一个名称
当您执行 ref1=num2 时,ref1 被分配了 num2 值,即 20 并且类似的 num1 被分配了 20 值
有人可以帮我解决这个问题吗?我认为输出将是 20 10 20(按照 ref1、num1、num2 的顺序)。为什么输出20 20 20? ref1 改变也会改变 num1?参考值对我来说是一个新概念,所以如果这是一个愚蠢的问题,我很抱歉。我知道你们更喜欢指针值,但在 class 这就是我们正在学习的内容,所以我想把它记下来。谢谢!
#include <iostream>
int main()
{
int num1 = 10;
int num2 = 20;
int &ref1 = num1;
ref1 = num2;
std::cout << "Ref1: " << ref1 << std::endl
<< "Num1: " << num1 << std::endl
<< "Num2: " << num2 << std::endl;
}
Why does it output 20 20 20
ref1 是对 num1 的引用,因此当您将 ref1 赋值为 num2 其实你把num1赋值给了num2,这就是引用的目的
所以就像你这样做一样
int * ref1 = &num1;
*ref1 = num2;
how do I find out their memory values/addresses
ref1右边(printf中的情况)给出了num1[=31的值=],要获得引用元素的地址而不是像往常一样使用其值 &,所以 &ref1 值 &num1。注意你不能重新分配一个引用,你只能初始化它们
你可以理解为引用变量是别名,即现有变量的别名 因此 ref1 num1 的另一个名称 当您执行 ref1=num2 时,ref1 被分配了 num2 值,即 20 并且类似的 num1 被分配了 20 值