Pascal Move的用法
System單元的Move過程用來把指定內(nèi)存段的數(shù)據(jù)整塊復(fù)制到另一內(nèi)存段中,它通常用來成批移動數(shù)組元素。Move的格式是Move(var Source, Dest; Count: Word),Source是數(shù)據(jù)源,Dest是目標(biāo)內(nèi)存段,Count是復(fù)制的字節(jié)數(shù)。你不必?fù)?dān)心源內(nèi)存段會和目標(biāo)內(nèi)存段重疊或者重合,在這種情況下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的類型(所占字節(jié)數(shù))有關(guān),以下給出參考
|
byte,shortint |
|
| word,integer |
|
| longint |
|
| |
|
| single |
|
| real |
|
| |
|
| extended |
|
| |
|
| char |
|
| |
|
| string |
1(per char)* |
*例 Var a:string 'a:='12345'; move(a[4],a[1],2); a="45345"
基本上Pascal里常用的就這些了
另外,所占字節(jié)數(shù)不同不能move(不是數(shù)組,Count選字節(jié)數(shù)大的,有時也是可以的),不同類型不能move,否則會搞得亂七八糟,而往往因move錯誤地使用造成的 答案錯誤、死循環(huán) 很難發(fā)現(xiàn)!
相關(guān)文章
electron桌面應(yīng)用程序搭建及簡單運(yùn)行
這篇文章主要介紹了electron桌面應(yīng)用程序搭建及運(yùn)行,需要的朋友可以參考下2022-12-12
一個能生成精美代碼圖片的工具Carbon!讓看代碼成為一種享受
當(dāng)我們想展示自己寫的代碼給別人看的時候,希望讓代碼保持原有的格式,并且要美觀一點(diǎn),有一個強(qiáng)大的在線工具可以幫助我們實(shí)現(xiàn),而且支持多種主題,他就是Carbon,需要的朋友可以參考下2021-05-05
淺談服務(wù)發(fā)現(xiàn)和負(fù)載均衡的來龍去脈
單機(jī)時代,傳統(tǒng)軟件大多是單體/巨石架構(gòu)(Monolithic)。大家往一個代碼倉庫提交CODE,這會導(dǎo)致應(yīng)用膨脹,以及擴(kuò)展受限,無法按需伸縮等諸多問題。單體架構(gòu)怎么解決多人合作的問題?模塊化,按功能拆分,模塊之間定義編程接口(API)。本篇文章帶你詳細(xì)了解。2021-05-05
bilibili彈幕轉(zhuǎn)ass程序制作思路及過程
本文主要是為了方便線下播放Bilibili的彈幕,而專門制作的一款將彈幕轉(zhuǎn)換為ASS的程序,介紹了程序制作的思路及過程,有需要的朋友可以參考下2014-09-09

