首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

关于 Delphi 的指针,该怎么处理

2012-04-15 
关于 Delphi 的指针看一个指针用法的例子:arX,Y:IntegerP:^IntegercStr:StringbeginX:17P:@X//书上

关于 Delphi 的指针
看一个指针用法的例子:  
ar
  X,Y:Integer;
  P:^Integer;
  cStr:String;
 begin
  X:=17;
  P:=@X; //书上说指针是一个无符号整数,把X的地址赋给P,此时P里存的是一个什么值?一个整数?
  //我用str(P,cStr)说是类型不符了。STR(X,cStr)就可以,所以P也不是一个整数啊...
  //那此时P的值究竟是多少?怎么获取?我想看看地址究竟是什么东西。
  Y:=P^;
end;



[解决办法]

Delphi(Pascal) code
var  X,Y:Integer;  P:^Integer;  cStr:String;begin  X := 17;  P := @X;  Str(P^,cStr); //P是指针,你要访问其中的值,要对它解引用  ShowMessage(cStr);end;
[解决办法]
P的值就是X的地址: Integer(P)
P指向的值就是X的值:P^

打个比方,内存就好比数组a: array[0..9] of Byte;
现在假设X就是a[3],即a[3]=X=17,那么P的值就是X的地址3,而P指向的值就是a[3]
[解决办法]
探讨
引用:
P存的是X的地址,值是17


那地址和变量有什么区别? 直接引用X的值也是17啊

[解决办法]
这样你就明白了。
var
x:Integer;
p:^Integer;
st:string;
begin
x := 17;
p := @x;
ShowMessage(IntToStr(Integer(p)));//p的值是地址,可能是1254201这么个东西。
ShowMessage(IntToStr(p^));//p^是p指向地址保存的值,就是17
end;

热点排行