查看: 106|回复: 0

[教程] Pascal Move的用法

[复制链接]

3

主题

0

回帖

0

积分

热心网友

金币
0
阅读权限
220
精华
0
威望
0
贡献
0
在线时间
0 小时
注册时间
2008-10-27
发表于 2021-11-16 23:08:41 | 显示全部楼层 |阅读模式
 

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

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]移6个longint 到P[4]
     for I := 0 to 9 do Writeln(P[I]: 4);
end.

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)*

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

基本上Pascal里常用的就这些了

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

回复

使用道具 举报

返回列表 发新帖
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

圆梦公社,专注于为全球华人提供纯粹技术交流的地方,请勿发布任何政治及违法的言论。如有相关侵权、举报、投诉及建议等,请发 E-mail:dzh188@hotmail.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部