写程序有好一段时间了,突然间想起有这样的一个问题:例如:
var
  i : Integer;
  p : pInteger;
begin
  i := 10;
  p := @i;
end;上面代码中p是指针10的内存首地址并是Integer类型的,这个好理解,但变量在内存中是怎么引用10的?i := 10是一个怎么样的机制?它不是用地址跟10关联那是用什么关联的呢?

解决方案 »

  1.   

    楼主可以看一下变量的寻址方式和怎么读取变量的值,记得原来的Think C++中有,或者一般的汇编教程中都有。
      

  2.   

    上面代码编译后的实际是这样:
    i := 10;   mov [ebp-$04],$0000000a 
    p := @i;  lea ebx,[ebp-$04]ebp-$04就是I,它实际上是栈
    P实际上就是指向该栈的一个指针即ebx      
      

  3.   

    变量其实是内存上的一个值.
    用record,pack record去理解一下.