delphi中move 函數額用法


 var pSource,pDest:PChar;
     len: integer;
.......................//一些代碼
Move(pSource,pDest,len); //錯誤


Move(pSource^,pDest^,len); //正確


看起來確實好像是傳值,而不是傳地址,但是各位別忘了,這不是C,C++,而是Delphi


Object Pascal,所以,絕不能從函數調用的方法判斷是傳值還是串地址!!必須看函數的


定義,只有定義才能說明是傳值還是傳地址,再說一遍,這不是C,C++!!

我們看到的函數定義是這樣的


procedure Move(const Source; var Dest; Count: Integer);


從定義上看,很清楚,Dest是傳地址,而不是傳值,那么Source呢,其實大家不太清楚


這里的Const修飾符有兩個含義,第一個大家都知道就是Source一常量方式在函數體內,

不可以改變它的值,第二個,那就是Source的傳遞方式和Dest一樣,是傳地址!也就是

說const和var一樣,都是傳地址,只不過一個在函數內不允許修改,另一個是修改后影響

調用的變量值所以Move是傳地址,而恰恰不是傳值!

舉例1:

var
Source,Dest: string;
begin
Source := '123456789';
Dest   := '---------'; Move(Source[5], Dest[3], 4);

ShowMessage(Dest); {--5678---}
end;

舉例2:

Move(socket.header, socket.hdata^, sizeof(socket.header));


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM