delphi指针问题,寻爱Delphi的人。
function ft(obj:pinteger):integer;//这里的参数接收数组的首地址或对象指针这样填标准吗?
begin
result:=(pinteger(obj)+1)^; //这里如果要返回数组的某个元素应该怎么写?先不计是否是全局变量。
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i : pinteger;
b:array[0..7]of integer;
int:integer;
begin
b[0]:=888;
b[1]:=777;
b[2]:=444;
b[3]:=333;
b[4]:=222;
i:=@b[0];
//Inc(pinteger(i), 4); //为什么这里要强制转换下,本身就是integer类型的?
edit1.Text:=inttostr((i+4)^); //这样为什么不行?
//edint1.text:=inttostr(i);//如何输出指针里存放的地址?
ft(i);
end;
end.
问题如上注释,愿详细回答,纠结了多天了。第一次发帖,分不多请多包涵。
delphi,pscal都没有书全面的讲语法类型之类的,如类似c primer plus的书,这么好的语言,唉。
[解决办法]
procedure TForm1.Button1Click(Sender: TObject);
var
pI : pinteger;
arrB:array[0..7]of integer;
begin
arrB[0]:=888;
arrB[1]:=777;
arrB[2]:=444;
arrB[3]:=333;
arrB[4]:=222;
pI := @arrB[0];
ShowMessage(IntToStr(Pi^)); // 888
ShowMessage(IntToHex(Integer(Pi), 8)); //0012F528
ShowMessage(IntToStr( Pinteger(Integer(Pi)+4)^ )); // 777
ShowMessage(IntToStr( Pinteger(Integer(Pi)+4*sizeof(Integer))^ )); // 222
Inc(pI,4);
ShowMessage(IntToStr(Pi^)); // 222
ShowMessage(IntToHex(Integer(Pi), 8)); //0012F538
end;