其实变量是个什么样的东西?

chenyq2008 2008-11-29 11:50:24
写程序有好一段时间了,突然间想起有这样的一个问题:

例如:
var
i : Integer;
p : pInteger;
begin
i := 10;
p := @i;
end;

上面代码中p是指针10的内存首地址并是Integer类型的,这个好理解,但变量在内存中是怎么引用10的?i := 10是一个怎么样的机制?它不是用地址跟10关联那是用什么关联的呢?
...全文
115 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
kampan 2008-11-29
  • 打赏
  • 举报
回复
把00001010这么一个东西放在i的地址空间之中
willflyz 2008-11-29
  • 打赏
  • 举报
回复
变量其实是内存上的一个值.
用record,pack record去理解一下.
长沙三毛 2008-11-29
  • 打赏
  • 举报
回复
编译时,i := 10 是把 10 存放到 i 变量的地址空间中。
liangpei2008 2008-11-29
  • 打赏
  • 举报
回复
看一下汇编,搞清楚那几种寻址方式就明白了
Reverse.King 2008-11-29
  • 打赏
  • 举报
回复
上面代码编译后的实际是这样:
i := 10; mov [ebp-$04],$0000000a
p := @i; lea ebx,[ebp-$04]

ebp-$04就是I,它实际上是栈
P实际上就是指向该栈的一个指针即ebx

7年 2008-11-29
  • 打赏
  • 举报
回复
学习。
Bear_hx 2008-11-29
  • 打赏
  • 举报
回复
楼主可以看一下变量的寻址方式和怎么读取变量的值,记得原来的Think C++中有,或者一般的汇编教程中都有。

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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