zwj.123 发表于 2023-2-12 10:59:08

C++引用赋值后地址问题,求大佬们help qwq十分感谢

#include <iostream>
using namespace std;
int main()
{
        int x=10,y=20;
        int &r=x;
        cout<<r<<endl;
        printf("r=%p \n",r);
                printf("x=%p \n",x);
                        printf("y=%p \n",y);
        r=y;
                printf("r=%p \n",r);
                        printf("y=%p \n",y);
        cout<<r;
        return 0;
}

在r=y之后,r的地址居然变成y的地址了,但是看教材上说r和x绑定了的,按理来说,y只应该把y的值赋给r吧?地址为啥变了qwq

dolly_yos2 发表于 2023-2-12 11:05:00

从哪里看到地址变了?

zwj.123 发表于 2023-2-12 11:10:36

dolly_yos2 发表于 2023-2-12 11:05
从哪里看到地址变了?

10
r=000000000000000a
x=000000000000000a
y=0000000000000014
r=0000000000000014
y=0000000000000014
20
这是输出的结果

洋洋痒 发表于 2023-2-12 11:23:50

#include <iostream>
using namespace std;
int main()
{
      int x=10,y=20;
      int &r=x;
      cout<<r<<endl;
      printf("r=%p \n",&r);
                printf("x=%p \n",&x);
                        printf("y=%p \n",&y);
      r=y;
                printf("r=%p \n",&r);
                        printf("y=%p \n",&y);
      cout<<r;
      return 0;
}

你告诉我我俩的代码有什么区别?

谁说打印地址是这么打印的

洋洋痒 发表于 2023-2-12 11:25:38

000000000000000a
看到这样的数就应该反应过来这不是地址,地址哪有这么整整齐齐的
就算是地址,也轮不到我们用这样的地址,前边的都是操作系统用的

zwj.123 发表于 2023-2-12 11:34:51

洋洋痒 发表于 2023-2-12 11:25
000000000000000a
看到这样的数就应该反应过来这不是地址,地址哪有这么整整齐齐的
就算是地址,也轮不到 ...

懂了懂了,十分感谢{:5_95:}

dolly_yos2 发表于 2023-2-12 11:36:04

zwj.123 发表于 2023-2-12 11:10
这是输出的结果

这样传递给 printf 的可是 r 存储的值,即使 printf 把它当地址按地址格式打印也只是因为 %p 的指示,要获取地址就看看 std::addressof 吧
页: [1]
查看完整版本: C++引用赋值后地址问题,求大佬们help qwq十分感谢