关于 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]
[解决办法]
[解决办法]
这样你就明白了。
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;