【问题标题】:how is int& referenceToA = a; possible? [duplicate]int&referenceToA = a; 怎么样?可能的? [复制]
【发布时间】:2019-04-08 02:32:35
【问题描述】:

我阅读了有关 int*int& 的教程。首先,我输入

int a = 3 

然后,

int* x = &a; 

表示x 是一个指向地址 a 的指针,这意味着xVALUEPOINTSa的地址。正确的?

但如果我这样做了

int& x = a; 

这意味着 x 的地址指向 a 的值,对吗?还是意味着不同的东西? EXACLTY 是什么意思?

【问题讨论】:

  • 使用单个反引号突出显示代码,如下所示:`int a = 3` 变为 int a = 3
  • 将引用视为被引用变量的别名。引用被引用的变量,只是名称不同。
  • 指针指向事物,而不是事物的地址。所以x是一个指向a的指针,即x的值就是a的地址。
  • @Pete Becker 我们将 &a 分配给 'int* x' 这一事实表明 x 的值是指向 &a 的指针,在这种情况下,&a 是 a 的地址,而不是一个。
  • @Python_Beginner -- &aa 的地址。将该值存储在指针中会将指针设置为该值,就像 int i = 3; 将 3 存储在 i 中一样。

标签: c++ pointers reference


【解决方案1】:

另一种理解方式是创建两个变量并将两个值都设置为 3。然后,打印两个变量的地址并将它们与 int &y = a; 的地址进行比较

int main()
{
 int a = 3; int* x = &a;
 int b = 3; int* m = &b;

 cout<<"x : "<<x<<endl;

 int& y = a;
 cout<<"y : "<<y<<endl;

 int* z = &y;
 cout<<"z : "<<z<<endl;

 cout<<"m : "<<m<<endl;

 return 0;
}

可以看到前两个地址是一样的,相对于变量b的地址。

【讨论】:

    【解决方案2】:

    不同位置的两个&amp; 标志表示两种不同的东西。

    int &amp;x = a 中,&amp;x 类型的一部分,即int&amp;引用int

    当您执行int *x = &amp;a 时,&amp; 就是address-of operator,它是一个一元运算符,它返回它所应用的对象的地址(就像-a 将返回a 的负数一样) .

    如需进一步阅读,请查看 JeJo 提到的问题:What are the differences between a pointer variable and a reference variable in C++?

    【讨论】:

    • 哇...我不知道...所以引用和地址是两个完全不同的东西...在'int &x = a'中,&表示引用,在'int *x = &a', & 表示地址。谢谢!
    • 只是为了仔细检查,如果我输入 'int& x = a',这意味着我将 a 的 VALUE 分配给 x 的 REFERENCE 对吗?
    • 不,您声明了一个名为 x 的对 int 的引用,它引用了 a,如果您愿意,x 将成为 a 的另一个名称。
    • 我明白了。这是有道理的。
    • 最后一个问题...如果我输入'cout
    猜你喜欢
    • 1970-01-01
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多