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);
這裡的const修飾符有兩個含義,第乙個大家都知道就是source一常量方式在函式體內,
不可以改變它的值,第二個,那就是source的傳遞方式和dest一樣,是傳位址!也就是
說const和var一樣,都是傳位址,只不過乙個在函式內不允許修改,另乙個是修改後影響
呼叫的變數值所以move是傳位址,而恰恰不是傳值!
舉例1:
var
source,dest:string;
begin
source := '123456789';
dest := '---------'; move(source[5], dest[3], 4);
showmessage(dest);
end;
舉例2:
move(socket.header, socket.hdata^, sizeof(socket.header));
delphi中move函式的用法
psource,pdest pchar len integer 一些 move psource,pdest,len 錯誤 move psource pdest len 正確 看起來確實好像是傳值,而不是傳位址,但是各位別忘了,這不是c,c 而是delphi object pascal,所以,絕不能從...
delphi 裡move函式的用法
我們能看到以下 var psource,pdest pchar len integer 一些 move psource,pdest,len 錯誤 move psource pdest len 正確 看起來確實好像是傳值,而不是傳位址,但是各位別忘了,這不是c,c 而是delphi object pa...
Delphi中TStringList的用法
tstrings是乙個抽象類,在實際開發中,是除了基本型別外,應用得最多的。常規的用法大家都知道,現在來討論它的一些高階的用法。先把要討論的幾個屬性列出來 1 commatext 2 delimiter delimitedtext 3 names values valuefromindex 一 co...