程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 關於動態數組指針操作的兩個例子

關於動態數組指針操作的兩個例子

編輯:Delphi

  最近突然感覺 Delphi 的動態數組非常好用, 善用它可以省略很多 GetMem、ReallocMem; 並且它是被自動維護的.

  動態數組變量 arr 本身就是指針, 不能再用 @arr 獲取;

  但要獲取某個元素位置的指針, 應該是 @arr[x]; 但隨著數組的再分配, 這個地址是變化的.

//動態數組地址測試  
var 
 i: Integer; 
 arr: TBytes; 
 p: PByte; 
begin 
 SetLength(arr, 5); 
 for i := 0 to 4 do arr[i] := i + 65; 
 ShowMessage(StringOf(arr)); {ABCDE} 
 
 p := PByte(arr); 
 ShowMessage(Chr(p^)); {A} 
 
 p := PByte(@arr[2]); 
 ShowMessage(Chr(p^)); {C} 
 
 p^ := Ord('-'); 
 ShowMessage(StringOf(arr)); {AB-DE} 
end; 
 
//合並兩個動態數組: 
var 
 arr1,arr2: TBytes; 
 len: Integer; 
begin 
 SetLength(arr1, 3); 
 SetLength(arr2, 3); 
 
 arr1[0] := 65; arr1[1] := 66; arr1[2] := 67; 
 arr2[0] := 68; arr2[1] := 69; arr2[2] := 70; 
 
 len := Length(arr1); 
 SetLength(arr1, len + Length(arr2)); 
 
 CopyMemory(Ptr(DWord(arr1)+len), arr2, Length(arr2)); 
 ShowMessage(StringOf(arr1)); {ABCDEF} 
end; 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved