鱼C论坛

 找回密码
 立即注册
查看: 1647|回复: 6

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

[复制链接]
发表于 2023-2-12 10:59:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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
最佳答案
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;
 } 

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

谁说打印地址是这么打印的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-12 11:05:00 From FishC Mobile | 显示全部楼层
从哪里看到地址变了?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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
这是输出的结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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;
 } 

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

谁说打印地址是这么打印的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2023-2-12 11:25:38 | 显示全部楼层
000000000000000a
看到这样的数就应该反应过来这不是地址,地址哪有这么整整齐齐的
就算是地址,也轮不到我们用这样的地址,前边的都是操作系统用的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

懂了懂了,十分感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-12 11:36:04 From FishC Mobile | 显示全部楼层
zwj.123 发表于 2023-2-12 11:10
这是输出的结果

这样传递给 printf 的可是 r 存储的值,即使 printf 把它当地址按地址格式打印也只是因为 %p 的指示,要获取地址就看看 std::addressof 吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-6-15 11:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表