我定义一个类
PClass = ^TClass;
TClass = record
  s1: array[0..9] of char;
  s2: array[0..9] of char;
end;var
  TObject: TClass;
  PObject: PClass;
PObject := PClass(TObject);请问PObect^.s1和PObject.s1有什么区别

解决方案 »

  1.   

    pobject^.s1是字符串s1的值,pobject.s1是字符串s1的地址。
      

  2.   

    既然你已经声明了类型
    PClass = ^TClass;
    及定义
    PObject: PClass;
    那么在使用时只有PObject.s1而没有PObject^.s1的用法。
    PClass是一个类型,而不是指针。
      

  3.   

    两者在DELPHI中应该没有区别,如果不是,后一种(PObject.s1)从严格的Pascal语法上看应该是错误的,如在TP下!但DELPHI中忽略了它!不过代码本身也有问题吧?TClass,TObject也能乱用?忘了申请内存吧?
    New(PObject)

    GetMem(PObject,Sizeof(PObject^));//推荐,更灵活
      

  4.   

    单纯从指针的概念 PObect^.s1和PObject.s1 是相同的,指向同一内存空间
      

  5.   

    同意ehom
    严格来说,PObject.s1 是错误的
      

  6.   


      TObject是 TClass一个对象的地址, PObject是指向TObject的地址,PObject 不能直接引用TCLass内部的成员。名字不好, 太容易错觉了!…