C 中的指针数学与德尔福中的指针数学



我必须将以下 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被采用然后前进i16 位字?

我也不确定德尔菲指针数学语法。逻辑上p[i]Delphi 代码应该像p[i]^一样寻找我,但最后一个变体会产生编译器错误"需要 E2017 指针类型"。

我的代码转换尝试是否正确?

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

p[i]是否意味着p被采用然后前进i个字节?

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

德尔福代码中的p[i]应该像p[i]^一样寻找我

不。p[i]是类型short的表达式。这不是一个指针,所以你不能^应用于它。

我的代码转换尝试是否正确?

是的。

相关内容

  • 没有找到相关文章

最新更新