procedure TForm1.Button1Click(Sender: TObject);
var
i,j:Integer ;
a:array[1..3,1..4] of integer ;
b:^Integer;
begin
for i:=1 to 3 do
for j:=1 to 4 do
begin
a[i,j]:=4*(i-1)+j;
end;
b:= @a[1,1];
inc(b,4*(4*(3-1)+(2-1)));
ShowMessage(IntToStr(b^));
// b:=b+ 4*(4*(3-1)+(2-1)); // ( @a[1,1]+4*(4*(3-1)+(2-1)) )^;
end;想获取A[3,2]的,但是没得到
這句有問題,如注掉這句可以得到正確結果,也就是數組第一個元數的值。
Inc(PByte, 1)是移动一个字节
Inc(PInteger, 1)是移动4字节
你现在的指针是b:^Integer,它的步长就是4字节的,因此你不要*4了。