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
从哪里看到地址变了?
10
r=000000000000000a
x=000000000000000a
y=0000000000000014
r=0000000000000014
y=0000000000000014
20
这是输出的结果 #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;
}
你告诉我我俩的代码有什么区别?
谁说打印地址是这么打印的 000000000000000a
看到这样的数就应该反应过来这不是地址,地址哪有这么整整齐齐的
就算是地址,也轮不到我们用这样的地址,前边的都是操作系统用的 洋洋痒 发表于 2023-2-12 11:25
000000000000000a
看到这样的数就应该反应过来这不是地址,地址哪有这么整整齐齐的
就算是地址,也轮不到 ...
懂了懂了,十分感谢{:5_95:}
zwj.123 发表于 2023-2-12 11:10
这是输出的结果
这样传递给 printf 的可是 r 存储的值,即使 printf 把它当地址按地址格式打印也只是因为 %p 的指示,要获取地址就看看 std::addressof 吧
页:
[1]