[Pascal]Move 在程序设计时的应用

System单元的move过程用来把指定内存段的数据整块复制到另一内存段中,它通常用来成批移动数组元素,使用move进行移动,往往比For一遍来得快些(个人感觉)Move的格式是 move(var Source, Dest; Count: Word)Source是数据源,Dest是目标内存段,Count是复制的字节数。你不必担心源内存段会和目标内存段重叠或者重合,在这种情况下move仍然能够正确工作,参考下面的样例:

非常感谢AI_Player介绍这种方法,copymem movemem在C语言中非常常见,其实其在Pascal中也很好用

var:

  I: Integer;

  P: array[0..9] of Longint;

begin

  for I := 0 to 9 do P[I] := I;

  move(P[4], P[2], 4 * 6);          P[2]6longint P[4]

  for I := 0 to 9 do Writeln(P[I]: 4);

0123456789 
0145678989

值得注意的是Count的大小,这与identifier的类型(所占字节数)有关,以下给出参考

byte,shortint

1

word,integer

2

longint

4

 

single

4

real

6

double,comp

8

extended

10

 

char

1

boolean

1

string

1(per char)*

\n

\n

* Var a:string  ''a:=''12345'';  move(a[4],a[1],2);  a="45345"

\n

 另外,所占字节数不同不能move(不是数组,Count选字节数大的,有时也是可以的),不同类型不能move,否则会搞得乱七八糟,而往往因move错误地使用造成的 答案错误、死循环 很难发现!

《[Pascal]Move 在程序设计时的应用》上有2条评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注