3
我有以下代碼:數組類型分配如何工作?
type
PSuperListItem = ^TSuperListItem;
TSuperListItem = record
SubItems : array of String;
Marked : Boolean;
ImageIndex: Integer;
end;
TSuperListItems = array of PSuperListItem;
TMyList = class(TCustomControl)
public
Items, ItemsX : TSuperListItems;
procedure SwapItemLists;
end;
procedure TMyList.SwapItemLists;
var tmp:TSuperListItems;
begin
tmp:=Items; Items:=ItemsX; ItemsX:=tmp;
end;
我想知道,如果我從SwapItemLists
做正確的assingtions。當我將Items
設置爲tmp
時發生了什麼?將會創建一個Items
的新副本,或者只傳遞該變量的指針?
也許挑剔,但我認爲你的關於字符串分配的陳述可能會讓將來的讀者感到困惑:你說分配是通過複製字符串來執行的,然後你繼續複製直到需要爲止。所以,未來的讀者可能會懷疑字符串何時被複制。 – iamjoosy 2014-12-02 16:10:49
@iamjoosy公平點。我嘗試了一個重新詞彙。我試圖得到的是,從程序員的角度來看,字符串的行爲就像是值,但實現是與COW的引用。從廣義上說,你不需要知道實現,並且如果你把字符串看作是價值的話,那麼你的心智模型就會匹配行爲。 – 2014-12-02 16:13:33