gpt4 book ai didi

c - C 中的指针数学与 Delphi 中的指针数学

转载 作者:行者123 更新时间:2023-12-03 15:53:37 25 4
gpt4 key购买 nike

我必须将以下 C 代码重写为 Delphi:

register short* p;
short k;
int i;

k = p[i];

结果看起来是这样的:

{$POINTERMATH ON}
var
p: ^SmallInt;
k: SmallInt;
i: Integer;
begin
k := p[i];
end;

现在我对这里使用的指针数学有点不确定。

p[i] 是否意味着获取 p,然后前进 i 字节?

或者可能是采用p,然后将其推进为i 16 位字?

此外,我不确定 Delphi 指针数学语法。从逻辑上讲,Delphi 代码中的 p[i] 应该像 p[i]^ 一样查找我,但最后一个变体会产生编译器错误“E2017 Pointer type required”。

我的代码转换尝试正确吗?

最佳答案

请注意,我将使用 i 而不是 d1str + d1st1 作为下面答案中的索引,因为它使说明更清晰。一旦您以这种更简单的形式理解它,就会更容易理解实际的代码。

Does p[i] mean that p is taken and then advanced for i bytes?

没有。这意味着,p 被视为指向short 数组的指针。然后 p[i] 是该数组的第 i 个元素。

p[i] in Delphi code should look for me like p[i]^

没有。 p[i] 是一个short 类型的表达式。这不是一个指针,因此您无法对其应用 ^

Is my code conversion attempt correct?

是的。

关于c - C 中的指针数学与 Delphi 中的指针数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61751700/

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