社区
语言基础/算法/系统设计
帖子详情
其实变量是个什么样的东西?
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关联那是用什么关联的呢?
...全文
119
7
打赏
收藏
其实变量是个什么样的东西?
写程序有好一段时间了,突然间想起有这样的一个问题: 例如: var i : Integer; p : pInteger; begin i := 10; p := @i; end; 上面代码中p是指针10的内存首地址并是Integer类型的,这个好理解,但变量在内存中是怎么引用10的?i := 10是一个怎么样的机制?它不是用地址跟10关联那是用什么关联的呢?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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,747
社区成员
33,239
社区内容
发帖
与我相关
我的任务
语言基础/算法/系统设计
Delphi 语言基础/算法/系统设计
复制链接
扫一扫
分享
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章