gpt4 book ai didi

string - 多个字符串变量真的可以引用相同的数据吗?

转载 作者:行者123 更新时间:2023-12-03 15:18:49 26 4
gpt4 key购买 nike

根据网上的资料我发现以下两个变量指向内存中的同一位置。

任何人都可以提出一个代码示例来证明它实际上是正确的(例如,通过更改第一个变量中的一个字母,并看到此更改从第二个变量中可见)?

procedure TForm1.Button1Click(Sender: TObject);
var
a, b: String;
begin
a := 'Test';
b := a;

showmessage (a);
showmessage (b);
end;

最佳答案

procedure TForm4.FormCreate(Sender: TObject);
var
a, b: string;
begin
a := 'Test';
b := a;
ShowMessage(BoolToStr(pointer(a) = pointer(b), true));
end;

结果是True,所以是的,ab指向相同的数据。

但是请注意,

procedure TForm4.FormCreate(Sender: TObject);
var
a, b: string;
begin
a := 'Test';
b := a;
b := 'Test2';
ShowMessage(BoolToStr(pointer(a) = pointer(b), true));
end;

显示False,正如它应该的那样。

此外,请注意

procedure TForm4.FormCreate(Sender: TObject);
var
a, b: string;
begin
a := 'Test';
b := a;
ShowMessage(BoolToStr(@a = @b, true));
end;

还显示False,因为ab不同字符串(指针)变量,所以在某些情况下内存中的地方(@a)是a的数据地址,其他地方(@b)是数据的地址b。第一个示例显示内存中的这两个位置包含相同的地址,即 ab 包含相同的数据。

关于string - 多个字符串变量真的可以引用相同的数据吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5327334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com