delphi 指针 认识

delphi 指针分为类型指针和无类型指针:

类型指针分为PChar、PInteger、PString等。

无类型指针Pointer。

PPChar/PP...为指针的指针

@和Addr一样,为获取变量存放的地址、^为指针指向的内容。

@变量, Addr(变量), 指针^

var
  p: pChar;      // 这样定义    p为类型指针:PChar()  PInteger() PString()...   PChar 可看做 ^Char
begin
  p := 'China';
  inc(p);
  p := p + 1;     // 同Inc(c)
  ShowMessage(p);
  dec(p);
  p := p -1 ;          // 减两次 还原
  ShowMessage(p);
end;

sdf

var
  p1: Pointer;   // p1位无类型指针
  s : string;
  i: integer;
begin
  s := 'China';
  p1 := PChar(s);                     // 给无类型指针赋值
  Showmessage(Char(p1^));           //
  p1:= Pointer(Integer(p1^)+1);        //把指针后移一位
  ShowMessage(string(Char(p1^)));       //读取后移后的指针内容 a
同样的代码在XE里却不行,string(Char(p1^))为乱码,
然后我将Integer(p1^) + 2 就行了,
是因为D7里的Char在XE里不是Char,而是WideChar,占两个字节,
所以要加2

 

posted @ 2015-10-24 15:07  王云盼  阅读(310)  评论(0编辑  收藏  举报