关于变量内存地址的小问题

dragonzcs 2009-07-05 09:54:19
int a=3;
cout<<&a;
显示0*0013FF7C
后八位可不可以用汇编的知识解释,就是变量地址可以表示为段基址:偏移地址(逻辑地址),其中段基址和偏移地址均是16位的,加起来就是32位,即0013FF7C(八个十六进制数,32位)。
如果是这样的话那么前面的0*是什么意思?谢谢

...全文
36 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangzhongke007 2009-07-05
  • 打赏
  • 举报
回复
不懂,关注吧~
中才德创 2009-07-05
  • 打赏
  • 举报
回复
不明白
Walf_ghoul 2009-07-05
  • 打赏
  • 举报
回复
0x:16进制,楼主不要当成*了。
lingyin55 2009-07-05
  • 打赏
  • 举报
回复
如果是这样的话那么前面的0*是什么意思?

应该是0x吧,表16进制
飞天御剑流 2009-07-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 dragonzcs 的帖子:]
int a=3;
cout < <&a;
显示0*0013FF7C
后八位可不可以用汇编的知识解释,就是变量地址可以表示为段基址:偏移地址(逻辑地址),其中段基址和偏移地址均是16位的,加起来就是32位,即0013FF7C(八个十六进制数,32位)。
如果是这样的话那么前面的0*是什么意思?谢谢
[/Quote]

不是这样的。无论数据还是代码中使用的都是偏移地址,都是相对寻址,是不包含段地址的。因为一个程序载入内存执行的时候,需要进行动态地址重定位,这个

操作是由操作系统的进程管理来进行的。因此我们写的程序和数据包括静态存储区啊什么的,用的都是偏移地址。

64,670

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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