pbyte和pchar是不是以'/0'结束的???怎样才能判断到它们是否以'/0'结束??? ( 积分: 200 )

  • 主题发起人 主题发起人 gzxyq
  • 开始时间 开始时间
G

gzxyq

Unregistered / Unconfirmed
GUEST, unregistred user!
pbyte和pchar是不是以'/0'结束的??怎样才能判断到它们是否以'/0'结束??
pc:pcahr;
pc:=pchar('AA');
此时的pc是不是以'/0'结束??
谢谢!!!
 
pbyte和pchar是不是以'/0'结束的??怎样才能判断到它们是否以'/0'结束??
pc:pcahr;
pc:=pchar('AA');
此时的pc是不是以'/0'结束??
谢谢!!!
 
procedure TForm1.FormCreate(Sender: TObject);
var
pc: PChar;
pb: PByte;
begin
pc :='aa';
ShowMessage(IntToStr(Integer(pc[3])));//pc就是以'/0'结束
pb :=PByte(pc);//此处不同于PChar,编译器要求类型比较严格
Integer(pb) :=Integer(pb) +3;
ShowMessage(IntToStr(Integer(pb^)));
end;
 
PByte不是以/0结尾的
你写的哪个是以/0结尾的
楼上写的程序怎么那么奇怪啊
 
运行了二楼写的代码;靠怎么都是‘0’?有没有高人指点;
不了解
楼主帮你顶
 
是十六进制的 0 ;
$0 结尾 ;

/0 只是说意思,那是 C 的;

你只要再一次 pchar('任意内容'); 它就肯定是 $0 结尾了;
 
二楼的代码的意思就是
ShowMessage(IntToStr(Integer(pc[3])));
pc为PChar2个字符长,取到第3个是0,说明以/0结尾
pb是一个Byte的指针类型,一开始取pc的头位置pb :=PByte(pc);
下面的一句我有点看不懂他的写法,如果让我写是这样inc(pc,3);
这样做似乎有点问题,pc应该是ShortInt的指针,或者直接Char的指针,ShortInt才是1字节长,Byte是两字节
那个integer就是让直接做数字加法,而不要考虑指针所指类型长度?
到了pc的第3个位置,当然也是0了
 
多人接受答案了。
 
后退
顶部