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