例如,我们有一个DWORD = $ 12345678
哪个指令会更快 - 绝对或移动()?
var a:DWORD = $12345678;
b:Array[0..3] of byte absolute a;
var a:DWORD = $12345678;b:Array[0..3] of Byte
begin
Move(a,b,4);
end;
Run Code Online (Sandbox Code Playgroud)
具体来说,我问的是'绝对'到底是做什么的,因为如果它没有使用额外的内存来编写那个byteArray那么我没有理由在这种情况下使用Move而不是绝对那么'绝对'是如何工作的?
dev*_*vio 18
绝对不执行任何操作; 它声明var的地址与另一个var的地址相同.
Move()执行复制操作,这需要一些时间.
绝对值,两个vars存储在同一地址,第二个声明存储在不同位置的变量.
'Absolute'只是另一种类型转换形式,就好像你有一个位置引用你的'A'DWORD有一个PByte指针来处理字节为:PByte(@A)^ [0]:= 3,PByte( @A)^ [1]:= 4等等你正在以另一种方式戳戳(或读取)DWORD变量.Pascal是一种强类型语言,但是使用类型转换(或ABSOLUTE),你几乎可以做任何事情.BRI