负数组索引

时间:2015-10-25 06:15:32

标签: c# arrays delphi

我有一段代表这样的C#代码

digitsResPtr[-1] = digitsPtr[0] << rightShiftRev;

其中digitsResPtrdigitsPtr是指向UInt32数组的指针,rightShiftRev是一个整数。

我想知道这个Delphi表示是否正确?

(digitsResPtr - 1)^ := digitsPtr[0] shl rightShiftRev;

我的主要问题是负面索引。

感谢。

Delphi XE7 UP 1.

1 个答案:

答案 0 :(得分:5)

我认为用指针算法做这个是最干净的。例如

{$POINTERMATH ON}
....
(digitsResPtr - 1)^ := digitsPtr[0] shl rightShiftRev;

{$POINTERMATH ON}
....
digitsResPtr[-1] := digitsPtr[0] shl rightShiftRev;

我假设digitsResPtr的类型为^UInt32,并且指向数组中间的某个位置。换句话说,你必须以某种方式或其他方式分配数组,然后初始化digitsResPtr这样的东西:

digitsResPtr := @digitsRes[5];