【发布时间】:2013-10-22 06:13:47
【问题描述】:
我正在研究 delphiXE2,我正在研究 PInteger。 如果我在我的 delphi 代码中这样做
var
P: PInteger;
testInt: Integer;
Scores: array[0..4] of Integer=(33,44,56,78,78);
begin
P := @Scores;
testInt := (P+1)^;
WriteLn(testInt);
ReadLn;
end;
我收到了这个错误。
[DCC Error] Project1.dpr(23): E2015 Operator not applicable to this operand type
PS:testInt := (P+1)^;是第23行
但是当我尝试这个时
var
PCh: PChar;
testchar: char;
str: array[0..4] of char=('a','b','c','d','e');
begin
PCh := @str;
testchar := (PCh+1)^;
WriteLn(testchar);
ReadLn;
end;
效果很好! 控制台可以打印'b'!
我不清楚这是怎么发生的,什么时候 ((Pointer)(P)+1)^ 可以工作?
【问题讨论】:
-
见
Delphi pointer arithmetic。只需添加指针算术编译器指令(适用于 D2009+)。 -
我看不出有任何理由在 Delphi 中使用这种糟糕的语法。请改用“p: PIntegerList”和标准语法“p[i]”来访问项目。
标签: delphi pointers delphi-xe2 pchar