如何取得引用本身的内存地址?

niefuhua 2003-03-14 12:25:17
int i=8;
int& h=i;
我如何才能取得h本身的地址呢?
...全文
80 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
kicool 2003-03-14
  • 打赏
  • 举报
回复
#include <iostream.h>

void main(){

int i = 8;
int &h = i;
int *p = &h;
cout<<p<<" @@ "<<&i<<endl;
}
to: sinman(罪人)
两者结果一样.
sinman 2003-03-14
  • 打赏
  • 举报
回复
int i = 8;
int &h = i;
int *p = &h;
cout<<p<<endl;
wengzhong 2003-03-14
  • 打赏
  • 举报
回复
引用不是值,不占存储空间,引用只能声明,不能定义.
justformat 2003-03-14
  • 打赏
  • 举报
回复
引用本身没有地址的
wengzhong 2003-03-14
  • 打赏
  • 举报
回复
to Jinglihui(雪狐)
能不能把你的测试方法说一下,我也试一下!!
liu_feng_fly 2003-03-14
  • 打赏
  • 举报
回复
引用虽然是用指针来实现的,但引用毕竟不同于指针。指针的指针是二重指针,但是引用的引用却还是引用本身,不会有二重引用出现。可能编译器在对待引用的时候做了很多手脚,而不仅仅是把引用翻译成指针。
Jinglihui 2003-03-14
  • 打赏
  • 举报
回复
kicool(多米诺)

int i = 8;
int &h = i;
int *p = &h;
cout<<p<<" @@ "<<&i<<endl;
}
to: sinman(罪人)
两者结果一样.
------------------------------------
int *p=&h;
这一句取的不是引用h的地址
这条语句实际执行的是用i的地址初始化p
count<<p<<"@@"<<&i<<endl;执行的结果当然就是相同了
Frank001 2003-03-14
  • 打赏
  • 举报
回复
int i=8;
mov dword ptr [ebp-4],8
int& h=i;
lea eax,[ebp-4]
mov dword ptr [ebp-8],eax
int m_i;
m_i=i;
mov ecx,dword ptr [ebp-4]
mov dword ptr [ebp-0Ch],ecx
m_i=h;
mov edx,dword ptr [ebp-8]
mov eax,dword ptr [edx]
mov dword ptr [ebp-0Ch],eax
Jinglihui 2003-03-14
  • 打赏
  • 举报
回复
引用也是占内存的,引在在内部存放的是一个对象的地址,它是该对象的别名。
详细见<<C++ primer>>
我用BCB做过测试了,引用有它自己的地址,它的值是对象的地址
Jinglihui 2003-03-14
  • 打赏
  • 举报
回复
支持 topikachu(皮皮)

皮皮,干嘛全说出来啊,我都没有话要说了!:)
topikachu 2003-03-14
  • 打赏
  • 举报
回复
引用只能被赋值.改变引用就是改变原先的变量.不可能有悬空的引用,所以在逻辑上讲,在c++中引用不象变量,指针或者类一样会占有实际的存储空间
在实际的编译器实现中,引用往往会用指针来实现,所以在物理代码中你也找不到引用的"影子"
DanielWYO 2003-03-14
  • 打赏
  • 举报
回复
TO wengzhong(翁仲)
引用虽然不是值,但在部分地方会发生引用产生值的情况,常常在类型的转换中.
也就是说,甚至可能,引用也会有自己独占的地址.
caizzrr 2003-03-14
  • 打赏
  • 举报
回复
h是不的别名,h的地址和i的一样

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧